/*      */ package dm.jdbc.driver;
/*      */ 
/*      */ import dm.jdbc.desc.ColumnDesc;
/*      */ import dm.jdbc.util.StringUtil;
/*      */ import java.sql.Connection;
/*      */ import java.sql.DatabaseMetaData;
/*      */ import java.sql.ResultSet;
/*      */ import java.sql.SQLException;
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ public class DmdbDatabaseMetaData_bs
/*      */   implements DatabaseMetaData
/*      */ {
/*      */   private DmdbConnection_bs connection;
/*      */   private final String m_esp;
/*   71 */   private boolean m_priv = false;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public DmdbDatabaseMetaData_bs(DmdbConnection_bs conn)
/*      */   {
/*   81 */     this.connection = conn;
/*   82 */     this.m_esp = " ESCAPE '!' ";
/*   83 */     this.m_priv = this.connection.getDbmdChkPrivileges();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean allProceduresAreCallable()
/*      */     throws SQLException
/*      */   {
/*  104 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean allTablesAreSelectable()
/*      */     throws SQLException
/*      */   {
/*  122 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getURL()
/*      */     throws SQLException
/*      */   {
/*  140 */     return this.connection.getURL();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getUserName()
/*      */     throws SQLException
/*      */   {
/*  157 */     return this.connection.getUserName();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean isReadOnly()
/*      */     throws SQLException
/*      */   {
/*  174 */     return this.connection.isReadOnly();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean nullsAreSortedHigh()
/*      */     throws SQLException
/*      */   {
/*  196 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean nullsAreSortedLow()
/*      */     throws SQLException
/*      */   {
/*  219 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean nullsAreSortedAtStart()
/*      */     throws SQLException
/*      */   {
/*  237 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean nullsAreSortedAtEnd()
/*      */     throws SQLException
/*      */   {
/*  255 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getDatabaseProductName()
/*      */     throws SQLException
/*      */   {
/*  273 */     if (this.connection.getComOra())
/*      */     {
/*  275 */       return "Oracle";
/*      */     }
/*  277 */     return "DM DBMS";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getDatabaseProductVersion()
/*      */     throws SQLException
/*      */   {
/*  294 */     return this.connection.getDmServerVersion();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getDriverName()
/*      */     throws SQLException
/*      */   {
/*  311 */     return "dm.jdbc.driver.DmDriver";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getDriverVersion()
/*      */     throws SQLException
/*      */   {
/*  329 */     String s = "3.0";
/*  330 */     if (DmdbType.JDBC_VERSION >= 4)
/*  331 */       s = "4.0";
/*  332 */     s = s + ".7.1.4.74 (Build 2015.08.13)";
/*      */     
/*  334 */     return s;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getDriverMajorVersion()
/*      */   {
/*  350 */     return DmdbType.JDBC_VERSION;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getDriverMinorVersion()
/*      */   {
/*  366 */     return 0;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean usesLocalFiles()
/*      */     throws SQLException
/*      */   {
/*  383 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean usesLocalFilePerTable()
/*      */     throws SQLException
/*      */   {
/*  401 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsMixedCaseIdentifiers()
/*      */     throws SQLException
/*      */   {
/*  424 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean storesUpperCaseIdentifiers()
/*      */     throws SQLException
/*      */   {
/*  442 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean storesLowerCaseIdentifiers()
/*      */     throws SQLException
/*      */   {
/*  460 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean storesMixedCaseIdentifiers()
/*      */     throws SQLException
/*      */   {
/*  478 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsMixedCaseQuotedIdentifiers()
/*      */     throws SQLException
/*      */   {
/*  505 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean storesUpperCaseQuotedIdentifiers()
/*      */     throws SQLException
/*      */   {
/*  523 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean storesLowerCaseQuotedIdentifiers()
/*      */     throws SQLException
/*      */   {
/*  541 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean storesMixedCaseQuotedIdentifiers()
/*      */     throws SQLException
/*      */   {
/*  559 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getIdentifierQuoteString()
/*      */     throws SQLException
/*      */   {
/*  581 */     return "\"";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getSQLKeywords()
/*      */     throws SQLException
/*      */   {
/*  613 */     StringBuffer sql = new StringBuffer("");
/*      */     
/*      */ 
/*  616 */     sql.append("BREAK,BROWSE,BULK,CHECKPOINT,CLUSTERED,COMMITTED,COMPUTE,");
/*  617 */     sql.append(" CONFIRM,CONTROLROW,DATABASE,DBCC,DISK,DISTRIBUTED,DUMMY,");
/*  618 */     sql.append(" DUMP,ERRLVL,ERROREXIT,EXIT,FILE,FILLFACTOR,FLOPPY,HOLDLOCK,");
/*  619 */     sql.append(" IDENTITY_INSERT,IDENTITYCOL,IF,KILL,LINENO,LOAD,MIRROREXIT,");
/*  620 */     sql.append("NONCLUSTERED,OFF,OFFSETS,ONCE,OVER,PERCENT,PERM,PERMANENT,PLAN, PRINT,");
/*      */     
/*      */ 
/*  623 */     sql.append("AFTER,ASSIGN,AUDIT,BEFORE,BITMAP,CACHE,CALL,CHAIN,CLUSTER,CYCLE,");
/*  624 */     sql.append(" DATABASE, DATAFILE, DEBUG, #DECODE, #DELETING, DISABLE,");
/*  625 */     sql.append(" EACH,ELSEIF,END,EXCLUSIVE, EXIT,FILLFACTOR, FUNCTION,");
/*  626 */     sql.append(" HEXTORAW,IDENTIFIED,IF, IFNULL,INCREASE, INDEX, ");
/*  627 */     sql.append(" INITIAL,INTENTION,ISNULL,ISOPEN,MAXVALUE,");
/*  628 */     sql.append(" MINVALUE,MODIFY,NATURAL,NEW, NEXT, NOAUDIT, NOCACHE,NOCYCLE,");
/*  629 */     sql.append(" NOTFOUND,  NVL, OFF, OLD, OUT,PENDANT, PERCENT, PRINT, PRIOR,");
/*  630 */     sql.append("RAISE,RAWTOHEX,READ,RENAME,RETURN,REVERSE,ROLE,ROWCOUNT,ROWNUM,SAVEPOINT,SERIALIZABLE,");
/*  631 */     sql.append(" SEQUENCE, SHARE, STATEMENT,TIES, TIMESTAMPADD, TIMESTAMPDIFF,");
/*  632 */     sql.append("TOP,TRIGGER,TRIGGERS,TRUNCATE,TYPECAST,UNCOMMITED,UNTIL,VSIZE,WHILE,LOGIN,");
/*  633 */     sql.append("EXTERNALLY,SESSION_PER_USER,CONNECT_IDLE_TIME,FAILED_LOGIN_ATTEMPS,");
/*  634 */     sql.append("PASSWORD_LIFE_TIME,PASSWORD_REUSE_TIME,PASSWORD_REUSE_MAX,");
/*  635 */     sql.append("PASSWORD_LOCK_TIME,PASSWORD_GRACE_TIME,POLICY,CATEGORY,UNLIMITED");
/*      */     
/*  637 */     return sql.toString();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getNumericFunctions()
/*      */     throws SQLException
/*      */   {
/*  656 */     return "ABS,ACOS,ASIN,ATAN,ATAN2,CEILING,COS,COT,DEGREES,EXP,FLOOR,LOG,LOG10,MOD,PI,POWER,RADIANS,RAND,ROUND,SIGN,SIN,SQRT,TAN,TRUNCATE,CEIL,COSH,LN,SINH,TANH";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getStringFunctions()
/*      */     throws SQLException
/*      */   {
/*  678 */     return "ASCII,CHAR,CONCAT,DIFFERENCE,INSERT,LCASE,LEFT,LENGTH,LOCATE,LTRIM,REPEAT,REPLACE,RIGHT,RTRIM,SOUNDEX,SPACE,UCASE,BIT_LENGTH,CHAR_LENGTH,CHARACTER_LENGTH,CHR,INITCAP,INSSTR,INSTR,INSTRB,LEFTSTR,LENGTHB,OCTET_LENGTH,LOWER,LPAD,POSITION,REPEATSTR,REVERSE,RIGHTSTR,RPAD,SUBSTR,SUBSTRB,TO_CHAR,TRANSLATE,TRIM,UPPER";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getSystemFunctions()
/*      */     throws SQLException
/*      */   {
/*  702 */     return "IFNULL,USER,CUR_DATABASE,DBID,EXTENT,PAGE,SESSID,UID,TABLEDEF,VSIZE,SET_TABLE_OPTION,SET_INDEX_OPTION,CFALGORITHMSENCRYPT,CFALGORITHMSDECRYPT,BFALGORITHMSENCRYPT,BFALGORITHMSDECRYPT,LABEL_TO_CHAR,LABEL_FROM_CHAR,LABEL_CMP,LABEL_STR_CMP";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getTimeDateFunctions()
/*      */     throws SQLException
/*      */   {
/*  726 */     return "CURDATE,CURTIME,DAYNAME,DAYOFMONTH,DAYOFWEEK,DAYOFYEAR,HOUR,MINUTE,MONTH,MONTHNAME,NOW,QUARTER,SECOND,TIMESTAMPADD,TIMESTAMPDIFF,WEEK,YEAR,ADD_DAYS,ADD_MONTHS,ADD_WEEKS,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,DATEADD,DATEDIFF,DATEPART,DAYS_BETWEEN,EXTRACT,GETDATE,LAST_DAY,MONTHS_BETWEEN,NEXT_DAY,ROUND,SYSDATE,TO_DATE,TRUNC,WEEKDAY,YEARS_BETWEEN";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getSearchStringEscape()
/*      */     throws SQLException
/*      */   {
/*  760 */     return "!";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getExtraNameCharacters()
/*      */     throws SQLException
/*      */   {
/*  778 */     return "";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsAlterTableWithAddColumn()
/*      */     throws SQLException
/*      */   {
/*  799 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsAlterTableWithDropColumn()
/*      */     throws SQLException
/*      */   {
/*  817 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsColumnAliasing()
/*      */     throws SQLException
/*      */   {
/*  837 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean nullPlusNonNullIsNull()
/*      */     throws SQLException
/*      */   {
/*  856 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsConvert()
/*      */     throws SQLException
/*      */   {
/*  874 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsConvert(int fromType, int toType)
/*      */     throws SQLException
/*      */   {
/*  899 */     boolean supportsconvert = false;
/*      */     
/*  901 */     if (toType == 91)
/*      */     {
/*  903 */       switch (fromType)
/*      */       {
/*      */       case -1: 
/*      */       case 1: 
/*      */       case 12: 
/*      */       case 91: 
/*      */       case 2005: 
/*  910 */         supportsconvert = true;
/*  911 */         break;
/*      */       }
/*      */       
/*      */     }
/*      */     
/*      */ 
/*  917 */     if ((toType == 3) || (toType == 2) || (toType == -6) || 
/*  918 */       (toType == 4) || (toType == 6) || (toType == 8) || 
/*  919 */       (toType == 7) || (toType == 5) || (toType == -5) || 
/*  920 */       (toType == 1) || (toType == 12) || (toType == -7) || 
/*  921 */       (toType == 16) || (toType == -1))
/*      */     {
/*  923 */       switch (fromType)
/*      */       {
/*      */       case -7: 
/*      */       case -6: 
/*      */       case -5: 
/*      */       case -1: 
/*      */       case 0: 
/*      */       case 1: 
/*      */       case 2: 
/*      */       case 3: 
/*      */       case 4: 
/*      */       case 5: 
/*      */       case 6: 
/*      */       case 7: 
/*      */       case 8: 
/*      */       case 12: 
/*      */       case 16: 
/*  940 */         supportsconvert = true;
/*  941 */         break;
/*      */       }
/*      */       
/*      */       
/*  945 */       return supportsconvert;
/*      */     }
/*      */     
/*  948 */     if (toType == 91)
/*      */     {
/*  950 */       switch (fromType)
/*      */       {
/*      */       case -1: 
/*      */       case 0: 
/*      */       case 1: 
/*      */       case 12: 
/*      */       case 91: 
/*      */       case 93: 
/*      */       case 2005: 
/*  959 */         supportsconvert = true;
/*  960 */         break;
/*      */       }
/*      */       
/*      */       
/*  964 */       return supportsconvert;
/*      */     }
/*  966 */     if (toType == 92)
/*      */     {
/*  968 */       switch (fromType)
/*      */       {
/*      */       case -1: 
/*      */       case 0: 
/*      */       case 1: 
/*      */       case 12: 
/*      */       case 92: 
/*      */       case 93: 
/*      */       case 2005: 
/*  977 */         supportsconvert = true;
/*  978 */         break;
/*      */       }
/*      */       
/*      */       
/*  982 */       return supportsconvert;
/*      */     }
/*  984 */     if (toType == 93)
/*      */     {
/*  986 */       switch (fromType)
/*      */       {
/*      */       case -1: 
/*      */       case 0: 
/*      */       case 1: 
/*      */       case 12: 
/*      */       case 91: 
/*      */       case 92: 
/*      */       case 93: 
/*      */       case 2005: 
/*  996 */         supportsconvert = true;
/*  997 */         break;
/*      */       }
/*      */       
/*      */       
/* 1001 */       return supportsconvert;
/*      */     }
/*      */     
/* 1004 */     if (toType == 2004)
/*      */     {
/* 1006 */       switch (fromType)
/*      */       {
/*      */       case -4: 
/*      */       case 2004: 
/* 1010 */         supportsconvert = true;
/* 1011 */         break;
/*      */       }
/*      */       
/*      */       
/* 1015 */       return supportsconvert;
/*      */     }
/* 1017 */     if (toType == 2005)
/*      */     {
/* 1019 */       switch (fromType)
/*      */       {
/*      */       case -1: 
/*      */       case 2005: 
/* 1023 */         supportsconvert = true;
/* 1024 */         break;
/*      */       }
/*      */       
/*      */       
/* 1028 */       return supportsconvert;
/*      */     }
/*      */     
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 1061 */     return supportsconvert;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsTableCorrelationNames()
/*      */     throws SQLException
/*      */   {
/* 1078 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsDifferentTableCorrelationNames()
/*      */     throws SQLException
/*      */   {
/* 1096 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsExpressionsInOrderBy()
/*      */     throws SQLException
/*      */   {
/* 1114 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsOrderByUnrelated()
/*      */     throws SQLException
/*      */   {
/* 1132 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsGroupBy()
/*      */     throws SQLException
/*      */   {
/* 1150 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsGroupByUnrelated()
/*      */     throws SQLException
/*      */   {
/* 1168 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsGroupByBeyondSelect()
/*      */     throws SQLException
/*      */   {
/* 1189 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsLikeEscapeClause()
/*      */     throws SQLException
/*      */   {
/* 1207 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsMultipleResultSets()
/*      */     throws SQLException
/*      */   {
/* 1226 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsMultipleTransactions()
/*      */     throws SQLException
/*      */   {
/* 1244 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsNonNullableColumns()
/*      */     throws SQLException
/*      */   {
/* 1262 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsMinimumSQLGrammar()
/*      */     throws SQLException
/*      */   {
/* 1279 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsCoreSQLGrammar()
/*      */     throws SQLException
/*      */   {
/* 1296 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsExtendedSQLGrammar()
/*      */     throws SQLException
/*      */   {
/* 1313 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsANSI92EntryLevelSQL()
/*      */     throws SQLException
/*      */   {
/* 1331 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsANSI92IntermediateSQL()
/*      */     throws SQLException
/*      */   {
/* 1349 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsANSI92FullSQL()
/*      */     throws SQLException
/*      */   {
/* 1367 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsIntegrityEnhancementFacility()
/*      */     throws SQLException
/*      */   {
/* 1385 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsOuterJoins()
/*      */     throws SQLException
/*      */   {
/* 1402 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsFullOuterJoins()
/*      */     throws SQLException
/*      */   {
/* 1419 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsLimitedOuterJoins()
/*      */     throws SQLException
/*      */   {
/* 1438 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getSchemaTerm()
/*      */     throws SQLException
/*      */   {
/* 1455 */     return "SCHEMA";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getProcedureTerm()
/*      */     throws SQLException
/*      */   {
/* 1472 */     return "PROCEDURE";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getCatalogTerm()
/*      */     throws SQLException
/*      */   {
/* 1489 */     return "CATALOG";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean isCatalogAtStart()
/*      */     throws SQLException
/*      */   {
/* 1508 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public String getCatalogSeparator()
/*      */     throws SQLException
/*      */   {
/* 1526 */     return "";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSchemasInDataManipulation()
/*      */     throws SQLException
/*      */   {
/* 1544 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSchemasInProcedureCalls()
/*      */     throws SQLException
/*      */   {
/* 1562 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSchemasInTableDefinitions()
/*      */     throws SQLException
/*      */   {
/* 1580 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSchemasInIndexDefinitions()
/*      */     throws SQLException
/*      */   {
/* 1598 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSchemasInPrivilegeDefinitions()
/*      */     throws SQLException
/*      */   {
/* 1616 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsCatalogsInDataManipulation()
/*      */     throws SQLException
/*      */   {
/* 1634 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsCatalogsInProcedureCalls()
/*      */     throws SQLException
/*      */   {
/* 1652 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsCatalogsInTableDefinitions()
/*      */     throws SQLException
/*      */   {
/* 1670 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsCatalogsInIndexDefinitions()
/*      */     throws SQLException
/*      */   {
/* 1688 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsCatalogsInPrivilegeDefinitions()
/*      */     throws SQLException
/*      */   {
/* 1706 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsPositionedDelete()
/*      */     throws SQLException
/*      */   {
/* 1724 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsPositionedUpdate()
/*      */     throws SQLException
/*      */   {
/* 1742 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSelectForUpdate()
/*      */     throws SQLException
/*      */   {
/* 1760 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsStoredProcedures()
/*      */     throws SQLException
/*      */   {
/* 1778 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSubqueriesInComparisons()
/*      */     throws SQLException
/*      */   {
/* 1797 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSubqueriesInExists()
/*      */     throws SQLException
/*      */   {
/* 1816 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSubqueriesInIns()
/*      */     throws SQLException
/*      */   {
/* 1834 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSubqueriesInQuantifieds()
/*      */     throws SQLException
/*      */   {
/* 1852 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsCorrelatedSubqueries()
/*      */     throws SQLException
/*      */   {
/* 1869 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsUnion()
/*      */     throws SQLException
/*      */   {
/* 1886 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsUnionAll()
/*      */     throws SQLException
/*      */   {
/* 1903 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsOpenCursorsAcrossCommit()
/*      */     throws SQLException
/*      */   {
/* 1922 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsOpenCursorsAcrossRollback()
/*      */     throws SQLException
/*      */   {
/* 1941 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsOpenStatementsAcrossCommit()
/*      */     throws SQLException
/*      */   {
/* 1960 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsOpenStatementsAcrossRollback()
/*      */     throws SQLException
/*      */   {
/* 1979 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxBinaryLiteralLength()
/*      */     throws SQLException
/*      */   {
/* 2005 */     return Integer.MAX_VALUE;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxCharLiteralLength()
/*      */     throws SQLException
/*      */   {
/* 2025 */     return this.connection.getMaxRowSize();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxColumnNameLength()
/*      */     throws SQLException
/*      */   {
/* 2045 */     return 128;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxColumnsInGroupBy()
/*      */     throws SQLException
/*      */   {
/* 2064 */     return 64;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxColumnsInIndex()
/*      */     throws SQLException
/*      */   {
/* 2082 */     return 16;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxColumnsInOrderBy()
/*      */     throws SQLException
/*      */   {
/* 2101 */     return 64;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxColumnsInSelect()
/*      */     throws SQLException
/*      */   {
/* 2120 */     return 1024;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxColumnsInTable()
/*      */     throws SQLException
/*      */   {
/* 2138 */     return 1024;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxConnections()
/*      */     throws SQLException
/*      */   {
/* 2158 */     return 256;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxCursorNameLength()
/*      */     throws SQLException
/*      */   {
/* 2178 */     return 128;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxIndexLength()
/*      */     throws SQLException
/*      */   {
/* 2198 */     return 1020;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxSchemaNameLength()
/*      */     throws SQLException
/*      */   {
/* 2218 */     return 128;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxProcedureNameLength()
/*      */     throws SQLException
/*      */   {
/* 2238 */     return 128;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxCatalogNameLength()
/*      */     throws SQLException
/*      */   {
/* 2258 */     return 0;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxRowSize()
/*      */     throws SQLException
/*      */   {
/* 2277 */     return 0;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean doesMaxRowSizeIncludeBlobs()
/*      */     throws SQLException
/*      */   {
/* 2296 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxStatementLength()
/*      */     throws SQLException
/*      */   {
/* 2316 */     return 8000;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxStatements()
/*      */     throws SQLException
/*      */   {
/* 2336 */     return 128;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxTableNameLength()
/*      */     throws SQLException
/*      */   {
/* 2356 */     return 128;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxTablesInSelect()
/*      */     throws SQLException
/*      */   {
/* 2376 */     return 50;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getMaxUserNameLength()
/*      */     throws SQLException
/*      */   {
/* 2396 */     return 128;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getDefaultTransactionIsolation()
/*      */     throws SQLException
/*      */   {
/* 2417 */     return 2;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsTransactions()
/*      */     throws SQLException
/*      */   {
/* 2437 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsTransactionIsolationLevel(int level)
/*      */     throws SQLException
/*      */   {
/* 2459 */     if ((level == 2) || 
/* 2460 */       (level == 1) || 
/* 2461 */       (level == 4) || 
/* 2462 */       (level == 8)) {
/* 2463 */       return true;
/*      */     }
/* 2465 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsDataDefinitionAndDataManipulationTransactions()
/*      */     throws SQLException
/*      */   {
/* 2483 */     return !this.connection.getDDL_Autocommit();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsDataManipulationTransactionsOnly()
/*      */     throws SQLException
/*      */   {
/* 2501 */     return this.connection.getDDL_Autocommit();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean dataDefinitionCausesTransactionCommit()
/*      */     throws SQLException
/*      */   {
/* 2519 */     return this.connection.getDDL_Autocommit();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean dataDefinitionIgnoredInTransactions()
/*      */     throws SQLException
/*      */   {
/* 2537 */     return !this.connection.getDDL_Autocommit();
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern)
/*      */     throws SQLException
/*      */   {
/* 2595 */     if ((this.connection.getComOra()) && (StringUtil.isNotEmpty(catalog)))
/*      */     {
/*      */       try
/*      */       {
/* 2599 */         return getPkgProcedures(schemaPattern, catalog, procedureNamePattern, 0);
/*      */       }
/*      */       catch (SQLException localSQLException1) {}
/*      */     }
/*      */     
/*      */ 
/* 2605 */     if ((schemaPattern != null) && (schemaPattern.equals("")))
/* 2606 */       throw new SQLException("There is not a procedure without a schema!");
/* 2607 */     if ((procedureNamePattern != null) && (procedureNamePattern.equals(""))) {
/* 2608 */       return null;
/*      */     }
/* 2610 */     String schemaname = schemaPattern == null ? "%" : StringUtil.getEscStringName(schemaPattern);
/* 2611 */     String procname = procedureNamePattern == null ? "%" : 
/* 2612 */       StringUtil.getEscStringName(procedureNamePattern);
/*      */     
/* 2614 */     StringBuffer sql = new StringBuffer("");
/* 2615 */     sql.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT NULL AS PROCEDURE_CAT, SCHEMAS.NAME AS PROCEDURE_SCHEM,");
/* 2616 */     sql.append("PROCS.NAME AS PROCEDURE_NAME, 'RESERVED1' AS RESERVED1,'RESERVED2' AS RESERVED2,'RESERVED3' AS RESERVED3, NULL AS REMARKS, 1 AS PROCEDURE_TYPE");
/*      */     
/* 2618 */     sql.append(" FROM ");
/*      */     
/*      */ 
/* 2621 */     String schemaClause = makeSchemaClause(schemaname);
/* 2622 */     sql.append(schemaClause);
/* 2623 */     sql.append(" SCHEMAS, ");
/*      */     
/* 2625 */     sql.append(" (SELECT * FROM SYS.SYSOBJECTS WHERE SUBTYPE$='PROC' ");
/* 2626 */     if (!this.connection.getComOra())
/*      */     {
/* 2628 */       sql.append("AND INFO1&0x01=1 ");
/*      */     }
/*      */     
/* 2631 */     String procClause = makeClause_objWithoutPrec(procname);
/* 2632 */     if (procClause != null)
/*      */     {
/* 2634 */       sql.append(" AND NAME ");
/* 2635 */       sql.append(procClause);
/*      */     }
/* 2637 */     sql.append(")PROCS");
/*      */     
/* 2639 */     sql.append(" WHERE SCHEMAS.ID = PROCS.SCHID");
/*      */     
/*      */ 
/* 2642 */     sql.append(" ORDER BY PROCEDURE_SCHEM ASC,PROCEDURE_NAME ASC;");
/*      */     
/* 2644 */     DmdbStatement_bs stmt = null;
/* 2645 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 2648 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 2649 */         1007, 1);
/* 2650 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql.toString(), 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 2656 */       throw e;
/*      */     }
/*      */     
/* 2659 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */   private ResultSet getPkgProcedures(String schName, String pkgName, String procName, int procType)
/*      */     throws SQLException
/*      */   {
/* 2666 */     StringBuffer sql = new StringBuffer("");
/* 2667 */     sql.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT PACAGES.NAME AS PROCEDURE_CAT, SCHEMAS.NAME AS PROCEDURE_SCHEM,");
/* 2668 */     sql.append("PROCS.MTDNAME AS PROCEDURE_NAME, 'RESERVED1' AS RESERVED1,'RESERVED2' AS RESERVED2,'RESERVED3' AS RESERVED3, NULL AS REMARKS, CASE PROCS.IS_PROC WHEN 'Y' THEN 1 ELSE  2 END AS PROCEDURE_TYPE");
/*      */     
/*      */ 
/*      */ 
/*      */ 
/* 2673 */     sql.append(" FROM SYS.SYSOBJECTS SCHEMAS, SYS.SYSOBJECTS PACAGES, SYS.V$PKGPROCS PROCS");
/* 2674 */     sql.append(" WHERE");
/* 2675 */     sql.append(" PROCS.PKGID = PACAGES.ID");
/* 2676 */     sql.append(" AND PACAGES.SCHID = SCHEMAS.ID");
/* 2677 */     if (procType == 1)
/*      */     {
/* 2679 */       sql.append(" AND PROCS.IS_PROC = 'Y'");
/*      */     }
/* 2681 */     else if (procType == 2)
/*      */     {
/* 2683 */       sql.append(" AND PROCS.IS_PROC = 'N'");
/*      */     }
/*      */     
/* 2686 */     if (StringUtil.isNotEmpty(schName))
/*      */     {
/* 2688 */       schName = StringUtil.getEscStringName(schName);
/* 2689 */       String schemaClause = makeClause_objWithoutPrec(schName);
/* 2690 */       if (schemaClause != null)
/*      */       {
/* 2692 */         sql.append(" AND SCHEMAS.NAME ");
/* 2693 */         sql.append(schemaClause);
/*      */       }
/*      */     }
/*      */     
/*      */ 
/* 2698 */     if (StringUtil.isNotEmpty(pkgName))
/*      */     {
/* 2700 */       pkgName = StringUtil.getEscStringName(pkgName);
/* 2701 */       String pkgClause = makeClause_objWithoutPrec(pkgName);
/* 2702 */       if (pkgClause != null)
/*      */       {
/* 2704 */         sql.append(" AND PROCS.PKGNAME ");
/* 2705 */         sql.append(pkgClause);
/*      */       }
/*      */     }
/*      */     
/*      */ 
/* 2710 */     if (StringUtil.isNotEmpty(procName))
/*      */     {
/* 2712 */       procName = StringUtil.getEscStringName(procName);
/* 2713 */       String procClause = makeClause_objWithoutPrec(procName);
/* 2714 */       if (procClause != null)
/*      */       {
/* 2716 */         sql.append(" AND PROCS.MTDNAME ");
/* 2717 */         sql.append(procClause);
/*      */       }
/*      */     }
/*      */     
/* 2721 */     sql.append("ORDER BY PROCEDURE_SCHEM ASC, PROCEDURE_CAT ASC, PROCEDURE_NAME ASC;");
/*      */     
/* 2723 */     DmdbStatement_bs stmt = null;
/* 2724 */     DmdbResultSet_bs rs = null;
/* 2725 */     stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 2726 */       1007, 1);
/* 2727 */     rs = (DmdbResultSet_bs)stmt.executeQuery(sql.toString(), 1);
/*      */     
/*      */ 
/* 2730 */     return rs;
/*      */   }
/*      */   
/*      */   private ResultSet getPkgProcedureColumns(String schName, String pkgName, String procName, String colName, int procType)
/*      */     throws SQLException
/*      */   {
/* 2736 */     StringBuffer sql = new StringBuffer("");
/* 2737 */     sql.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT ");
/* 2738 */     sql.append("PACAGES.NAME AS PROCEDURE_CAT, ");
/* 2739 */     sql.append("SCHEMAS.NAME AS PROCEDURE_SCHEM, ");
/* 2740 */     sql.append("PROCS.MTDNAME AS PROCEDURE_NAME, ");
/* 2741 */     sql.append("CASE TRIM(ARG.IOFLAG) WHEN 'R' THEN NULL ELSE ARG.NAME END AS COLUMN_NAME, ");
/* 2742 */     sql.append("CASE TRIM(ARG.IOFLAG)");
/* 2743 */     sql.append(" WHEN 'I' THEN 1");
/* 2744 */     sql.append(" WHEN 'O' THEN 4");
/* 2745 */     sql.append(" WHEN 'IO' THEN 2");
/* 2746 */     sql.append(" WHEN 'R' THEN 5");
/* 2747 */     sql.append(" END AS COLUMN_TYPE, ");
/*      */     
/* 2749 */     sql.append(makeDataTypeClause("ARG.TYPE$", "ARG.SCALE"));
/* 2750 */     sql.append("AS DATA_TYPE, ");
/*      */     
/* 2752 */     sql.append(makeDataTypeNameClause("ARG.TYPE$"));
/* 2753 */     sql.append("AS TYPE_NAME, ");
/*      */     
/* 2755 */     sql.append("CASE SF_GET_COLUMN_SIZE(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) ");
/* 2756 */     sql.append("WHEN -2 THEN NULL ");
/* 2757 */     sql.append("ELSE SF_GET_COLUMN_SIZE(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) END ");
/* 2758 */     sql.append("AS \"PRECISION\", ");
/*      */     
/* 2760 */     sql.append("CASE SF_GET_BUFFER_LEN(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) ");
/* 2761 */     sql.append("WHEN -2 THEN NULL ");
/* 2762 */     sql.append("ELSE SF_GET_BUFFER_LEN(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) END ");
/* 2763 */     sql.append("AS LENGTH, ");
/*      */     
/* 2765 */     sql.append("CASE SF_GET_DECIMAL_DIGITS(ARG.TYPE$, CAST (ARG.SCALE AS INT)) ");
/* 2766 */     sql.append("WHEN -2 THEN NULL ");
/* 2767 */     sql.append("ELSE SF_GET_DECIMAL_DIGITS(ARG.TYPE$, CAST (ARG.SCALE AS INT)) END ");
/* 2768 */     sql.append("AS SCALE, ");
/*      */     
/* 2770 */     sql.append("10 AS RADIX, ");
/* 2771 */     sql.append("1 AS NULLABLE, ");
/* 2772 */     sql.append("NULL AS REMARKS, ");
/* 2773 */     sql.append("ARG.DEFVAL AS COLUMN_DEF, ");
/* 2774 */     sql.append("NULL AS SQL_DATA_TYPE, ");
/* 2775 */     sql.append("NULL AS SQL_DATETIME_SUB, ");
/* 2776 */     sql.append("NULL AS CHAR_OCTET_LENGTH, ");
/* 2777 */     sql.append("ARG.PARAMID AS ORDINAL_POSITION, ");
/* 2778 */     sql.append("CASE ARG.NULLABLE WHEN 'Y' THEN 'YES' ELSE 'NO' END AS IS_NULLABLE, ");
/* 2779 */     sql.append("NULL AS SPECIFIC_NAME ");
/* 2780 */     sql.append("FROM SYS.SYSOBJECTS SCHEMAS, SYS.SYSOBJECTS PACAGES, SYS.V$PKGPROCS PROCS, SYS.V$PKGPROCPARAMS ARG");
/*      */     
/* 2782 */     sql.append(" WHERE");
/* 2783 */     sql.append(" PROCS.PKGID = PACAGES.ID");
/* 2784 */     sql.append(" AND PACAGES.SCHID = SCHEMAS.ID");
/* 2785 */     sql.append(" AND ARG.PKGID = PROCS.PKGID");
/* 2786 */     sql.append(" AND ARG.MTDID = PROCS.MTDID");
/*      */     
/* 2788 */     if (procType == 1)
/*      */     {
/* 2790 */       sql.append(" AND PROCS.IS_PROC = 'Y'");
/*      */     }
/* 2792 */     else if (procType == 2)
/*      */     {
/* 2794 */       sql.append(" AND PROCS.IS_PROC = 'N'");
/*      */     }
/*      */     
/*      */ 
/* 2798 */     if (StringUtil.isNotEmpty(schName))
/*      */     {
/* 2800 */       schName = StringUtil.getEscStringName(schName);
/* 2801 */       String schemaClause = makeClause_objWithoutPrec(schName);
/* 2802 */       if (schemaClause != null)
/*      */       {
/* 2804 */         sql.append(" AND SCHEMAS.NAME ");
/* 2805 */         sql.append(schemaClause);
/*      */       }
/*      */     }
/*      */     
/*      */ 
/* 2810 */     if (StringUtil.isNotEmpty(pkgName))
/*      */     {
/* 2812 */       pkgName = StringUtil.getEscStringName(pkgName);
/* 2813 */       String pkgClause = makeClause_objWithoutPrec(pkgName);
/* 2814 */       if (pkgClause != null)
/*      */       {
/* 2816 */         sql.append(" AND PROCS.PKGNAME ");
/* 2817 */         sql.append(pkgClause);
/*      */       }
/*      */     }
/*      */     
/*      */ 
/* 2822 */     if (StringUtil.isNotEmpty(procName))
/*      */     {
/* 2824 */       procName = StringUtil.getEscStringName(procName);
/* 2825 */       String procClause = makeClause_objWithoutPrec(procName);
/* 2826 */       if (procClause != null)
/*      */       {
/* 2828 */         sql.append(" AND PROCS.MTDNAME ");
/* 2829 */         sql.append(procClause);
/*      */       }
/*      */     }
/*      */     
/*      */ 
/* 2834 */     if (StringUtil.isNotEmpty(colName))
/*      */     {
/* 2836 */       colName = StringUtil.getEscStringName(colName);
/* 2837 */       String colClause = makeClause_objWithoutPrec(colName);
/* 2838 */       if (colClause != null)
/*      */       {
/* 2840 */         sql.append(" AND ARG.NAME ");
/* 2841 */         sql.append(colClause);
/*      */       }
/*      */     }
/*      */     
/* 2845 */     sql.append(" ORDER BY PROCEDURE_SCHEM ASC, PROCEDURE_CAT ASC, PROCEDURE_NAME ASC, ORDINAL_POSITION ASC;");
/* 2846 */     DmdbStatement_bs stmt = null;
/* 2847 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 2850 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 2851 */         1007, 1);
/* 2852 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql.toString(), 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 2858 */       throw e;
/*      */     }
/*      */     
/* 2861 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 2871 */   int procedureResultUnknown = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 2880 */   int procedureNoResult = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 2889 */   int procedureReturnsResult = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getProcedureColumns(String catalog, String schemaPattern, String procedureNamePattern, String columnNamePattern)
/*      */     throws SQLException
/*      */   {
/* 2969 */     if ((this.connection.getComOra()) && (StringUtil.isNotEmpty(catalog)))
/*      */     {
/*      */       try
/*      */       {
/* 2973 */         return getPkgProcedureColumns(schemaPattern, catalog, procedureNamePattern, 
/* 2974 */           columnNamePattern, 0);
/*      */       }
/*      */       catch (SQLException localSQLException1) {}
/*      */     }
/*      */     
/*      */ 
/* 2980 */     if ((schemaPattern != null) && (schemaPattern.equals("")))
/* 2981 */       throw new SQLException("There is not a procedure without a schema!");
/* 2982 */     if (((procedureNamePattern != null) && (procedureNamePattern.equals(""))) || ((columnNamePattern != null) && 
/* 2983 */       (columnNamePattern.equals("")))) {
/* 2984 */       return null;
/*      */     }
/* 2986 */     String schemaname = schemaPattern == null ? "%" : StringUtil.getEscStringName(schemaPattern);
/* 2987 */     String procname = procedureNamePattern == null ? "%" : 
/* 2988 */       StringUtil.getEscStringName(procedureNamePattern);
/* 2989 */     String colname = columnNamePattern == null ? "%" : StringUtil.getEscStringName(columnNamePattern);
/*      */     
/* 2991 */     StringBuffer sql = new StringBuffer();
/* 2992 */     sql.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT ");
/* 2993 */     sql.append("NULL AS PROCEDURE_CAT, ");
/* 2994 */     sql.append("USERS.NAME AS PROCEDURE_SCHEM, ");
/* 2995 */     sql.append("PROCS.NAME AS PROCEDURE_NAME, ");
/* 2996 */     if (this.connection.getComOra())
/*      */     {
/* 2998 */       sql.append("CASE ARG.INFO1 WHEN 3 THEN NULL ELSE ARG.NAME END AS COLUMN_NAME, ");
/*      */     }
/*      */     else
/*      */     {
/* 3002 */       sql.append("ARG.NAME AS COLUMN_NAME,");
/*      */     }
/* 3004 */     sql.append("CASE ARG.INFO1 WHEN 0 THEN 1 WHEN 1 THEN 4 WHEN 2 THEN 2 WHEN 3 THEN 5 END AS COLUMN_TYPE, ");
/* 3005 */     sql.append(makeDataTypeClause("ARG.TYPE$", "ARG.SCALE"));
/* 3006 */     sql.append("AS DATA_TYPE, ");
/* 3007 */     sql.append(makeDataTypeNameClause("ARG.TYPE$"));
/* 3008 */     sql.append("AS TYPE_NAME, ");
/* 3009 */     sql.append("CASE SF_GET_COLUMN_SIZE(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) ");
/* 3010 */     sql.append("WHEN -2 THEN NULL ");
/* 3011 */     sql.append("ELSE SF_GET_COLUMN_SIZE(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) END ");
/* 3012 */     sql.append("AS \"PRECISION\", ");
/* 3013 */     sql.append("CASE SF_GET_BUFFER_LEN(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) ");
/* 3014 */     sql.append("WHEN -2 THEN NULL ");
/* 3015 */     sql.append("ELSE SF_GET_BUFFER_LEN(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) END ");
/* 3016 */     sql.append("AS LENGTH, ");
/* 3017 */     sql.append("CASE SF_GET_DECIMAL_DIGITS(ARG.TYPE$, CAST (ARG.SCALE AS INT)) ");
/* 3018 */     sql.append("WHEN -2 THEN NULL ");
/* 3019 */     sql.append("ELSE SF_GET_DECIMAL_DIGITS(ARG.TYPE$, CAST (ARG.SCALE AS INT)) END ");
/* 3020 */     sql.append("AS SCALE, ");
/* 3021 */     sql.append("10 AS RADIX, ");
/* 3022 */     sql.append("1 AS NULLABLE, ");
/* 3023 */     sql.append("NULL AS REMARKS, ");
/* 3024 */     sql.append("ARG.DEFVAL AS COLUMN_DEF, ");
/* 3025 */     sql.append("NULL AS SQL_DATA_TYPE, ");
/* 3026 */     sql.append("NULL AS SQL_DATETIME_SUB, ");
/* 3027 */     sql.append("NULL AS CHAR_OCTET_LENGTH, ");
/* 3028 */     sql.append("ARG.COLID AS ORDINAL_POSITION, ");
/* 3029 */     sql.append("CASE ARG.NULLABLE$ WHEN 'Y' THEN 'YES' ELSE 'NO' END AS IS_NULLABLE, ");
/* 3030 */     sql.append("NULL AS SPECIFIC_NAME ");
/* 3031 */     sql.append("FROM ");
/*      */     
/*      */ 
/* 3034 */     String schemaClause = makeSchemaClause(schemaname);
/* 3035 */     sql.append(schemaClause);
/* 3036 */     sql.append(" USERS, ");
/*      */     
/*      */ 
/* 3039 */     String procClause = makeProcClause(procname);
/* 3040 */     sql.append(procClause);
/* 3041 */     sql.append(" PROCS, ");
/*      */     
/* 3043 */     sql.append("SYS.SYSCOLUMNS ARG ");
/*      */     
/* 3045 */     sql.append("WHERE USERS.ID = PROCS.SCHID AND PROCS.ID = ARG.ID ");
/*      */     
/*      */ 
/* 3048 */     String columnClause = makeClause_objWithoutPrec(colname);
/* 3049 */     if (columnClause != null)
/*      */     {
/* 3051 */       sql.append(" AND ARG.NAME ");
/* 3052 */       sql.append(columnClause);
/*      */     }
/*      */     
/* 3055 */     sql.append(" ORDER BY PROCEDURE_SCHEM ASC,PROCEDURE_NAME ASC, ORDINAL_POSITION ASC;");
/*      */     
/* 3057 */     DmdbStatement_bs stmt = null;
/* 3058 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 3061 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 3062 */         1007, 1);
/* 3063 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql.toString(), 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 3069 */       throw e;
/*      */     }
/* 3071 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3081 */   int procedureColumnUnknown = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3090 */   int procedureColumnIn = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3099 */   int procedureColumnInOut = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3108 */   int procedureColumnOut = 4;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3117 */   int procedureColumnReturn = 5;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3126 */   int procedureColumnResult = 3;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3135 */   int procedureNoNulls = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3144 */   int procedureNullable = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3153 */   int procedureNullableUnknown = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types)
/*      */     throws SQLException
/*      */   {
/* 3213 */     if ((schemaPattern != null) && (schemaPattern.equals("")))
/* 3214 */       throw new SQLException("There is not a table without a schema!");
/* 3215 */     if ((tableNamePattern != null) && (tableNamePattern.equals(""))) {
/* 3216 */       return null;
/*      */     }
/* 3218 */     String schemaname = schemaPattern == null ? "%" : StringUtil.getEscStringName(schemaPattern);
/* 3219 */     String procname = tableNamePattern == null ? "%" : StringUtil.getEscStringName(tableNamePattern);
/*      */     
/* 3221 */     String selectClause = "SELECT /*+ MAX_OPT_N_TABLES(5) */ NULL AS TABLE_CAT, SCHEMAS.NAME AS TABLE_SCHEM, TABS.NAME AS TABLE_NAME, CASE TABS.SUBTYPE$ WHEN 'UTAB' THEN 'TABLE' WHEN 'VIEW' THEN 'VIEW' WHEN 'STAB' THEN 'SYSTEM TABLE' WHEN 'SYNOM' THEN 'SYNONYM' END AS TABLE_TYPE, (SELECT COMMENT$ FROM SYSTABLECOMMENTS WHERE SCHNAME = SCHEMAS.NAME AND TVNAME = TABS.NAME) AS REMARKS, NULL AS TYPE_CAT, NULL AS TYPE_SCHEM, NULL AS TYPE_NAME, NULL AS SELF_REFERENCING_COL_NAME, NULL AS REF_GENERATION ";
/*      */     
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3231 */     String schemaClause = makeSchemaClause(schemaname);
/*      */     
/* 3233 */     String tableClause = makeClause_objWithoutPrec(procname);
/*      */     
/* 3235 */     String fromClause = " FROM " + schemaClause + " SCHEMAS," + " (SELECT * FROM SYS.SYSOBJECTS ";
/*      */     
/*      */ 
/* 3238 */     String typeClause = makeTableTypeClause(types);
/* 3239 */     if ((typeClause != null) || (tableClause != null))
/*      */     {
/* 3241 */       fromClause = fromClause + " WHERE ";
/*      */       
/* 3243 */       if (typeClause != null)
/*      */       {
/* 3245 */         fromClause = fromClause + typeClause;
/*      */         
/* 3247 */         if (tableClause != null) {
/* 3248 */           fromClause = fromClause + " AND NAME " + tableClause;
/*      */         }
/*      */         
/*      */       }
/* 3252 */       else if (tableClause != null) {
/* 3253 */         fromClause = fromClause + " NAME " + tableClause;
/*      */       }
/*      */     }
/*      */     
/* 3257 */     fromClause = fromClause + ") TABS";
/*      */     
/* 3259 */     String whereClause = " WHERE TABS.SCHID = SCHEMAS.ID ";
/* 3260 */     if (this.m_priv)
/*      */     {
/* 3262 */       whereClause = whereClause + " AND (SCHEMAS.PID = UID() OR EXISTS (SELECT * FROM SYS.SYSGRANTS WHERE (URID = UID() OR URID = 67108866) AND (TABS.ID = OBJID AND (PRIVID = -1 OR PRIVID = 8192)))) ";
/*      */     }
/*      */     
/*      */ 
/* 3266 */     String orderClause = " ORDER BY TABLE_TYPE ASC,TABLE_SCHEM ASC,TABLE_NAME ASC;";
/*      */     
/*      */ 
/* 3269 */     String sql = selectClause + fromClause + whereClause + orderClause;
/*      */     
/* 3271 */     DmdbStatement_bs stmt = null;
/* 3272 */     DmdbResultSet_bs rs = null;
/*      */     
/*      */     try
/*      */     {
/* 3276 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 3277 */         1007, 1);
/* 3278 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 3285 */       throw e;
/*      */     }
/*      */     
/* 3288 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */   private String makeSchemaClause(String schemaname)
/*      */   {
/* 3295 */     String schemaClause = null;
/* 3296 */     if (getEscape(schemaname))
/*      */     {
/* 3298 */       if (schemaname.equalsIgnoreCase("%")) {
/* 3299 */         schemaClause = "(SELECT ID, NAME, PID FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCH') ";
/*      */       } else
/* 3301 */         schemaClause = 
/* 3302 */           "(SELECT ID, NAME, PID FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCH' AND NAME LIKE '" + schemaname + "' " + this.m_esp + " ) ";
/*      */     } else {
/* 3304 */       schemaClause = 
/* 3305 */         "(SELECT ID, NAME, PID FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCH' AND NAME = '" + schemaname + "' ) ";
/*      */     }
/* 3307 */     return schemaClause;
/*      */   }
/*      */   
/*      */ 
/*      */   private String makeTableClause(String tabName)
/*      */   {
/* 3313 */     String clause = null;
/* 3314 */     if (getEscape(tabName))
/*      */     {
/* 3316 */       if (tabName.equalsIgnoreCase("%")) {
/* 3317 */         clause = "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ IN('UTAB', 'STAB', 'VIEW')) ";
/*      */       }
/*      */       else
/* 3320 */         clause = 
/*      */         
/* 3322 */           "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ IN('UTAB', 'STAB', 'VIEW') AND NAME LIKE '" + tabName + "' " + this.m_esp + " ) ";
/*      */     } else {
/* 3324 */       clause = 
/* 3325 */         "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ IN('UTAB', 'STAB', 'VIEW') AND NAME = '" + tabName + "' ) ";
/*      */     }
/* 3327 */     return clause;
/*      */   }
/*      */   
/*      */   private String makeTableClause_utab(String tabName)
/*      */   {
/* 3332 */     String clause = null;
/* 3333 */     if (getEscape(tabName))
/*      */     {
/* 3335 */       if (tabName.equalsIgnoreCase("%")) {
/* 3336 */         clause = "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'UTAB') ";
/*      */       }
/*      */       else
/* 3339 */         clause = 
/* 3340 */           "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'UTAB' AND NAME LIKE '" + tabName + "' " + this.m_esp + " ) ";
/*      */     } else {
/* 3342 */       clause = 
/* 3343 */         "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'UTAB' AND NAME = '" + tabName + "' ) ";
/*      */     }
/* 3345 */     return clause;
/*      */   }
/*      */   
/*      */ 
/*      */   private String makeProcClause(String procName)
/*      */   {
/* 3351 */     String clause = null;
/* 3352 */     if (getEscape(procName))
/*      */     {
/* 3354 */       if (procName.equalsIgnoreCase("%")) {
/* 3355 */         clause = "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'PROC' ";
/*      */       }
/*      */       else
/* 3358 */         clause = 
/* 3359 */           "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'PROC' AND NAME LIKE '" + procName + "' " + this.m_esp;
/*      */     } else {
/* 3361 */       clause = 
/* 3362 */         "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'PROC' AND NAME = '" + procName + "' ";
/*      */     }
/* 3364 */     if (clause != null)
/*      */     {
/* 3366 */       if (!this.connection.getComOra())
/*      */       {
/* 3368 */         clause = clause + " AND INFO1&0X01 = 1";
/*      */       }
/* 3370 */       clause = clause + ")";
/*      */     }
/*      */     
/* 3373 */     return clause;
/*      */   }
/*      */   
/*      */ 
/*      */   private String makeFuncClause(String funcName)
/*      */   {
/* 3379 */     String clause = null;
/* 3380 */     if (getEscape(funcName))
/*      */     {
/* 3382 */       if (funcName.equalsIgnoreCase("%")) {
/* 3383 */         clause = "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'PROC' AND INFO1&0X01 = 0) ";
/*      */       }
/*      */       else
/* 3386 */         clause = 
/*      */         
/* 3388 */           "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'PROC' AND INFO1&0X01 = 0 AND NAME LIKE '" + funcName + "' " + this.m_esp + " ) ";
/*      */     } else {
/* 3390 */       clause = 
/* 3391 */         "(SELECT ID, SCHID, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'PROC' AND INFO1&0X01 = 0 AND NAME = '" + funcName + "' ) ";
/*      */     }
/* 3393 */     return clause;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   private String makeClause_objWithoutPrec(String tpname)
/*      */   {
/* 3450 */     String tableClause = null;
/* 3451 */     if (getEscape(tpname)) {
/* 3452 */       if (!tpname.equalsIgnoreCase("%")) {
/* 3453 */         tableClause = "LIKE '" + tpname + "' " + this.m_esp;
/*      */       }
/*      */     }
/*      */     else {
/* 3457 */       tableClause = "= '" + tpname + "' ";
/*      */     }
/* 3459 */     return tableClause;
/*      */   }
/*      */   
/*      */   private String makeTableTypeClause(String[] types)
/*      */   {
/* 3464 */     String typeClause = "";
/* 3465 */     String retTypeClause = "(";
/*      */     
/* 3467 */     String subpartitionClause = "CAST((INFO3 & 0x00FF & 0x003F) AS INT) != 9 AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) != 27 AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) != 29 AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) != 25 AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) != 12 AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) != 7 AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) != 21 AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) != 23 AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) != 18 AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) != 5";
/*      */     
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3482 */     if (types != null)
/*      */     {
/* 3484 */       for (int i = 0; i < types.length; i++)
/*      */       {
/* 3486 */         if (types[i].equalsIgnoreCase("TABLE")) {
/* 3487 */           typeClause = typeClause + "OR (SUBTYPE$='UTAB' AND " + subpartitionClause + ")";
/* 3488 */         } else if (types[i].equalsIgnoreCase("VIEW")) {
/* 3489 */           typeClause = typeClause + "OR SUBTYPE$='VIEW' ";
/* 3490 */         } else if (types[i].equalsIgnoreCase("SYSTEM TABLE")) {
/* 3491 */           typeClause = typeClause + "OR SUBTYPE$='STAB' ";
/* 3492 */         } else if (types[i].equalsIgnoreCase("SYNONYM")) {
/* 3493 */           typeClause = typeClause + "OR SUBTYPE$='SYNOM' ";
/*      */         }
/*      */       }
/* 3496 */       if (typeClause.length() > 3)
/*      */       {
/* 3498 */         retTypeClause = retTypeClause + typeClause.substring(3);
/* 3499 */         retTypeClause = retTypeClause + ")";
/*      */         
/* 3501 */         return retTypeClause;
/*      */       }
/*      */     }
/*      */     
/* 3505 */     return null;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getSchemas()
/*      */     throws SQLException
/*      */   {
/* 3531 */     String sql = new String(
/* 3532 */       "SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT NAME AS TABLE_SCHEM, NULL AS TABLE_CATALOG ");
/* 3533 */     sql = sql + " FROM SYS.SYSOBJECTS USERS WHERE TYPE$='SCH'";
/* 3534 */     sql = sql + " ORDER BY TABLE_SCHEM ASC;";
/*      */     
/* 3536 */     DmdbStatement_bs stmt = null;
/* 3537 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 3540 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 3541 */         1007, 1);
/* 3542 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 3548 */       throw e;
/*      */     }
/* 3550 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getCatalogs()
/*      */     throws SQLException
/*      */   {
/* 3574 */     String sql = "SELECT /*+ MAX_OPT_N_TABLES(5) */ NULL AS TABLE_CAT FROM SYS.SYSDUAL WHERE 1=2;";
/* 3575 */     DmdbStatement_bs stmt = null;
/* 3576 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 3579 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 3580 */         1007, 1);
/* 3581 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 3587 */       throw e;
/*      */     }
/* 3589 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getTableTypes()
/*      */     throws SQLException
/*      */   {
/* 3615 */     String sql = "(SELECT 'SYSTEM TABLE' AS TABLE_TYPE FROM SYS.SYSDUAL UNION SELECT 'TABLE' AS TABLE_TYPE FROM SYS.SYSDUAL) UNION SELECT 'VIEW' AS TABLE_TYPE FROM SYS.SYSDUAL ";
/*      */     
/*      */ 
/*      */ 
/* 3619 */     DmdbStatement_bs stmt = null;
/* 3620 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 3623 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 3624 */         1007, 1);
/*      */       
/* 3626 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 3632 */       throw e;
/*      */     }
/* 3634 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)
/*      */     throws SQLException
/*      */   {
/* 3718 */     if ((schemaPattern != null) && (schemaPattern.equals(""))) {
/* 3719 */       throw new SQLException("There is not a table without a schema!");
/*      */     }
/* 3721 */     if (((tableNamePattern != null) && (tableNamePattern.equals(""))) || ((columnNamePattern != null) && 
/* 3722 */       (columnNamePattern.equals("")))) {
/* 3723 */       return null;
/*      */     }
/* 3725 */     String schemaname = schemaPattern == null ? "%" : StringUtil.getEscStringName(schemaPattern);
/* 3726 */     String tablename = tableNamePattern == null ? "%" : StringUtil.getEscStringName(tableNamePattern);
/* 3727 */     String columnname = columnNamePattern == null ? "%" : 
/* 3728 */       StringUtil.getEscStringName(columnNamePattern);
/*      */     
/* 3730 */     StringBuffer sql = new StringBuffer();
/* 3731 */     sql.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT ");
/* 3732 */     sql.append("NULL AS TABLE_CAT, ");
/* 3733 */     sql.append("SCHS.NAME AS TABLE_SCHEM, ");
/* 3734 */     sql.append("TABS.NAME AS TABLE_NAME, ");
/* 3735 */     sql.append("COLS.NAME AS COLUMN_NAME, ");
/* 3736 */     sql.append(makeDataTypeClause("COLS.TYPE$", "COLS.SCALE"));
/* 3737 */     sql.append("AS DATA_TYPE,");
/* 3738 */     sql.append(makeDataTypeNameClause("COLS.TYPE$"));
/* 3739 */     sql.append("AS TYPE_NAME,");
/* 3740 */     sql.append("CASE SF_GET_COLUMN_SIZE(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) ");
/* 3741 */     sql.append("WHEN -2 THEN NULL ");
/* 3742 */     sql.append("ELSE SF_GET_COLUMN_SIZE(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) END ");
/* 3743 */     sql.append("AS COLUMN_SIZE,");
/* 3744 */     sql.append("CASE SF_GET_BUFFER_LEN(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) ");
/* 3745 */     sql.append("WHEN -2 THEN NULL ");
/* 3746 */     sql.append("ELSE SF_GET_BUFFER_LEN(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) END ");
/* 3747 */     sql.append("AS BUFFER_LENGTH,");
/* 3748 */     sql.append("CASE SF_GET_DECIMAL_DIGITS(COLS.TYPE$, CAST (COLS.SCALE AS INT)) ");
/* 3749 */     sql.append("WHEN -2 THEN NULL ");
/* 3750 */     sql.append("ELSE SF_GET_DECIMAL_DIGITS(COLS.TYPE$, CAST (COLS.SCALE AS INT)) END ");
/* 3751 */     sql.append("AS DECIMAL_DIGITS,");
/* 3752 */     sql.append("10 AS NUM_PREC_RADIX,");
/* 3753 */     sql.append("CASE COLS.NULLABLE$ WHEN 'Y' THEN 1 ELSE 0 END AS NULLABLE,");
/*      */     
/*      */ 
/* 3756 */     sql.append("(SELECT COMMENT$ FROM SYSCOLUMNCOMMENTS WHERE SCHNAME=SCHS.NAME AND TVNAME=TABS.NAME AND COLNAME=COLS.NAME) AS REMARKS,");
/*      */     
/* 3758 */     sql.append("COLS.DEFVAL AS COLUMN_DEF,");
/* 3759 */     sql.append("0 AS SQL_DATA_TYPE,");
/* 3760 */     sql.append("0 AS SQL_DATETIME_SUB,");
/* 3761 */     sql.append("CASE SF_GET_OCT_LENGTH(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT)) ");
/* 3762 */     sql.append("WHEN -2 THEN NULL ");
/* 3763 */     sql.append("ELSE SF_GET_OCT_LENGTH(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT)) END ");
/* 3764 */     sql.append("AS CHAR_OCTET_LENGTH,");
/* 3765 */     sql.append("COLS.COLID + 1 AS ORDINAL_POSITION,");
/* 3766 */     sql.append("CASE COLS.NULLABLE$ WHEN 'Y' THEN 'YES' ELSE 'NO' END AS IS_NULLABLE,");
/* 3767 */     sql.append("NULL AS SCOPE_CATLOG,");
/* 3768 */     sql.append("NULL AS SCOPE_SCHEMA,");
/* 3769 */     sql.append("NULL AS SCOPE_TABLE,");
/* 3770 */     sql.append("0 AS SOURCE_DATA_TYPE ");
/* 3771 */     sql.append("FROM ");
/*      */     
/*      */ 
/* 3774 */     String schemaClause = makeSchemaClause(schemaname);
/* 3775 */     sql.append(schemaClause);
/* 3776 */     sql.append(" AS SCHS, ");
/*      */     
/*      */ 
/* 3779 */     String tabClause = makeTableClause(tablename);
/* 3780 */     sql.append(tabClause);
/* 3781 */     sql.append(" AS TABS, ");
/*      */     
/*      */ 
/* 3784 */     sql.append("SYS.SYSCOLUMNS AS COLS");
/*      */     
/*      */ 
/* 3787 */     sql.append(" WHERE TABS.ID = COLS.ID AND SCHS.ID = TABS.SCHID ");
/*      */     
/*      */ 
/* 3790 */     String colClause = makeClause_objWithoutPrec(columnname);
/* 3791 */     if (colClause != null)
/*      */     {
/* 3793 */       sql.append("AND COLS.NAME ");
/* 3794 */       sql.append(colClause);
/*      */     }
/*      */     
/*      */ 
/* 3798 */     sql.append(" ORDER BY TABLE_SCHEM ASC,TABLE_NAME ASC,ORDINAL_POSITION ASC;");
/*      */     
/* 3800 */     DmdbStatement_bs stmt = null;
/* 3801 */     ResultSet rs = null;
/*      */     try
/*      */     {
/* 3804 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 3805 */         1007, 1);
/* 3806 */       rs = stmt.executeQuery(sql.toString(), 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 3812 */       throw e;
/*      */     }
/* 3814 */     return rs;
/*      */   }
/*      */   
/*      */   private String makeDataTypeNameClause(String typeColName)
/*      */   {
/* 3819 */     return 
/* 3820 */       "CASE INSTR(" + typeColName + ",'CLASS',1,1) WHEN 0 THEN " + typeColName + " ELSE SF_GET_CLASS_NAME(" + typeColName + ") END ";
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   private String makeDataTypeClause(String typeColName, String scaleColName)
/*      */   {
/* 3832 */     StringBuffer sBuffer = new StringBuffer();
/* 3833 */     sBuffer.append("CASE " + typeColName);
/* 3834 */     if (this.connection.getComOra())
/*      */     {
/* 3836 */       sBuffer.append(" WHEN 'NUMBER' THEN 3");
/* 3837 */       sBuffer.append(" WHEN 'NUMERIC' THEN 3");
/*      */     }
/*      */     else {
/* 3840 */       sBuffer.append(" WHEN 'NUMBER' THEN 2");
/* 3841 */       sBuffer.append(" WHEN 'NUMERIC' THEN 2");
/*      */     }
/*      */     
/* 3844 */     sBuffer.append(" WHEN 'TIMESTAMP' THEN 93");
/* 3845 */     sBuffer.append(" WHEN 'CHARACTER' THEN 1");
/* 3846 */     sBuffer.append(" WHEN 'VARCHAR' THEN 12");
/* 3847 */     sBuffer.append(" WHEN 'VARCHAR2' THEN 12");
/* 3848 */     sBuffer.append(" WHEN 'DEC' THEN 3");
/* 3849 */     sBuffer.append(" WHEN 'DECIMAL' THEN 3");
/* 3850 */     sBuffer.append(" WHEN 'BIT' THEN -7");
/* 3851 */     sBuffer.append(" WHEN 'INT' THEN 4");
/* 3852 */     sBuffer.append(" WHEN 'INTEGER' THEN 4");
/* 3853 */     sBuffer.append(" WHEN 'BIGINT' THEN -5");
/* 3854 */     sBuffer.append(" WHEN 'BYTE' THEN -6");
/* 3855 */     sBuffer.append(" WHEN 'TINYINT' THEN -6");
/* 3856 */     sBuffer.append(" WHEN 'SMALLINT' THEN 5");
/* 3857 */     sBuffer.append(" WHEN 'BINARY' THEN -2");
/* 3858 */     sBuffer.append(" WHEN 'VARBINARY' THEN -3");
/* 3859 */     sBuffer.append(" WHEN 'FLOAT' THEN 6");
/* 3860 */     sBuffer.append(" WHEN 'DOUBLE' THEN 8");
/* 3861 */     sBuffer.append(" WHEN 'REAL' THEN 7");
/* 3862 */     sBuffer.append(" WHEN 'DOUBLE PRECISION' THEN 8");
/* 3863 */     sBuffer.append(" WHEN 'DATE' THEN 91");
/* 3864 */     sBuffer.append(" WHEN 'TIME' THEN 92");
/* 3865 */     sBuffer.append(" WHEN 'DATETIME' THEN 93");
/* 3866 */     sBuffer.append(" WHEN 'TEXT' THEN -1");
/* 3867 */     sBuffer.append(" WHEN 'LONGVARCHAR' THEN -1");
/* 3868 */     sBuffer.append(" WHEN 'IMAGE' THEN -4");
/* 3869 */     sBuffer.append(" WHEN 'LONGVARBINARY' THEN -4");
/* 3870 */     sBuffer.append(" WHEN 'BLOB' THEN 2004");
/* 3871 */     sBuffer.append(" WHEN 'CLOB' THEN 2005");
/* 3872 */     sBuffer.append(" WHEN 'CURSOR' THEN -10");
/* 3873 */     sBuffer.append(" WHEN 'BOOL' THEN 16");
/* 3874 */     sBuffer.append(" WHEN 'BOOLEAN' THEN 16");
/* 3875 */     sBuffer.append(" ELSE SF_GET_DATA_TYPE(" + typeColName + ", CAST(" + scaleColName + " AS INT), 3)");
/* 3876 */     sBuffer.append(" END ");
/* 3877 */     return sBuffer.toString();
/*      */   }
/*      */   
/*      */   private boolean getEscape(String str)
/*      */   {
/* 3882 */     boolean flag = false;
/*      */     
/* 3884 */     int len = str.length();
/*      */     
/* 3886 */     if (len == 1)
/*      */     {
/* 3888 */       if ((str.charAt(0) == '%') || (str.charAt(0) == '_'))
/*      */       {
/* 3890 */         return true;
/*      */       }
/*      */       
/*      */ 
/* 3894 */       return false;
/*      */     }
/*      */     
/*      */ 
/* 3898 */     for (int i = len - 1; i >= 0; i--)
/*      */     {
/* 3900 */       if ((str.charAt(i) == '%') || (str.charAt(i) == '_'))
/*      */       {
/* 3902 */         flag = true;
/*      */       }
/*      */     }
/*      */     
/* 3906 */     return flag;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3915 */   int columnNoNulls = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3923 */   int columnNullable = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 3931 */   int columnNullableUnknown = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getColumnPrivileges(String catalog, String schema, String table, String columnNamePattern)
/*      */     throws SQLException
/*      */   {
/* 3983 */     if (table == null) {
/* 3984 */       throw new SQLException("NULL TABLE NAME");
/*      */     }
/* 3986 */     if ((schema != null) && (schema.equals(""))) {
/* 3987 */       throw new SQLException("There is not a table without a schema!");
/*      */     }
/* 3989 */     if (((table != null) && (table.equals(""))) || ((columnNamePattern != null) && (columnNamePattern.equals("")))) {
/* 3990 */       return null;
/*      */     }
/* 3992 */     String schemaname = schema == null ? this.connection.getUserName() : schema;
/* 3993 */     String tablename = table;
/* 3994 */     String columnname = columnNamePattern == null ? "%" : columnNamePattern;
/*      */     
/* 3996 */     schemaname = StringUtil.getEscStringName(schemaname);
/* 3997 */     tablename = StringUtil.getEscStringName(tablename);
/* 3998 */     columnname = StringUtil.getEscStringName(columnname);
/*      */     
/* 4000 */     StringBuffer sql = new StringBuffer();
/* 4001 */     sql.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT NULL AS TABLE_CAT,'");
/* 4002 */     sql.append(schemaname);
/* 4003 */     sql.append("' AS TABLE_SCHEM, '");
/* 4004 */     sql.append(tablename);
/* 4005 */     sql.append("' AS TABLE_NAME, ");
/* 4006 */     sql.append("COLS.NAME AS COLUMN_NAME, ");
/* 4007 */     sql.append("GRANTORS.NAME AS GRANTOR,");
/* 4008 */     sql.append("GRANTEES.NAME AS GRANTEE,");
/* 4009 */     sql.append("SF_GET_SYS_PRIV(CAST (COLGRANTS.PRIVID AS INT)) AS PRIVILEGE, ");
/* 4010 */     sql.append("CASE COLGRANTS.GRANTABLE WHEN 'Y' THEN 'YES' WHEN 'N' THEN 'NO' END AS IS_GRANTABLE ");
/* 4011 */     sql.append("FROM SYS.SYSGRANTS COLGRANTS, ");
/* 4012 */     sql.append("SYS.SYSCOLUMNS COLS, ");
/* 4013 */     sql.append("SYS.SYSOBJECTS GRANTORS, ");
/* 4014 */     sql.append("(SELECT ID, NAME FROM SYS.SYSOBJECTS WHERE SUBTYPE$='USER' OR SUBTYPE$='ROLE') GRANTEES,");
/*      */     
/* 4016 */     sql.append("(SELECT ID, NAME, SCHID FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ = 'UTAB') TABS ");
/*      */     
/* 4018 */     sql.append("WHERE TABS.SCHID = ");
/* 4019 */     sql.append("(SELECT ID FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCH' AND NAME = '");
/* 4020 */     sql.append(schemaname);
/* 4021 */     sql.append("') AND TABS.NAME = '");
/* 4022 */     sql.append(tablename);
/* 4023 */     sql.append("' AND COLGRANTS.OBJID = TABS.ID ");
/*      */     
/* 4025 */     String colClause = makeClause_objWithoutPrec(columnname);
/* 4026 */     if (colClause != null)
/*      */     {
/* 4028 */       sql.append("AND COLS.NAME ");
/* 4029 */       sql.append(colClause);
/*      */     }
/*      */     
/* 4032 */     sql.append(" AND COLGRANTS.GRANTOR = GRANTORS.ID AND COLGRANTS.URID = GRANTEES.ID AND ");
/* 4033 */     sql.append("COLGRANTS.COLID = COLS.COLID AND COLGRANTS.OBJID = COLS.ID");
/* 4034 */     sql.append(" ORDER BY COLUMN_NAME ASC,PRIVILEGE ASC;");
/*      */     
/* 4036 */     DmdbStatement_bs stmt = null;
/* 4037 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 4040 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 4041 */         1007, 1);
/* 4042 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql.toString(), 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 4048 */       throw e;
/*      */     }
/* 4050 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getTablePrivileges(String catalog, String schemaPattern, String tableNamePattern)
/*      */     throws SQLException
/*      */   {
/* 4101 */     if ((schemaPattern != null) && (schemaPattern.equals(""))) {
/* 4102 */       throw new SQLException("There is not a table without a schema!");
/*      */     }
/* 4104 */     if ((tableNamePattern != null) && (tableNamePattern.equals(""))) {
/* 4105 */       return null;
/*      */     }
/* 4107 */     String schemaname = schemaPattern == null ? "%" : StringUtil.getEscStringName(schemaPattern);
/* 4108 */     String tablename = tableNamePattern == null ? "%" : StringUtil.getEscStringName(tableNamePattern);
/*      */     
/* 4110 */     StringBuffer sql = new StringBuffer();
/* 4111 */     sql.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT NULL AS TABLE_CAT,");
/* 4112 */     sql.append("USERS.NAME AS TABLE_SCHEM, ");
/* 4113 */     sql.append("TABS.NAME AS TABLE_NAME,");
/* 4114 */     sql.append("GRANTORS.NAME AS GRANTOR,");
/* 4115 */     sql.append("GRANTEES.NAME AS GRANTEE,");
/* 4116 */     sql.append("SF_GET_SYS_PRIV(CAST (TVGRANTS.PRIVID AS INT)) AS PRIVILEGE,");
/* 4117 */     sql.append("CASE TVGRANTS.GRANTABLE WHEN 'Y' THEN 'YES' WHEN 'N' THEN 'NO' END AS IS_GRANTABLE");
/* 4118 */     sql.append(" FROM ");
/*      */     
/* 4120 */     String scheClause = makeSchemaClause(schemaname);
/* 4121 */     sql.append(scheClause);
/* 4122 */     sql.append(" USERS, ");
/*      */     
/*      */ 
/* 4125 */     String utbClause = makeTableClause_utab(tablename);
/* 4126 */     sql.append(utbClause);
/* 4127 */     sql.append(" TABS, ");
/*      */     
/*      */ 
/* 4130 */     sql.append("SYS.SYSGRANTS TVGRANTS, SYS.SYSOBJECTS AS GRANTORS, SYS.SYSOBJECTS AS GRANTEES ");
/*      */     
/*      */ 
/* 4133 */     sql.append("WHERE ");
/* 4134 */     sql.append("GRANTORS.TYPE$ = 'UR' AND GRANTORS.SUBTYPE$ = 'USER' AND ");
/* 4135 */     sql.append("GRANTEES.TYPE$ = 'UR' AND GRANTEES.SUBTYPE$ = 'USER' AND ");
/* 4136 */     sql.append("TABS.SCHID = USERS.ID AND ");
/* 4137 */     sql.append("TVGRANTS.OBJID = TABS.ID AND TVGRANTS.URID = GRANTEES.ID AND ");
/* 4138 */     sql.append("TVGRANTS.GRANTOR = GRANTORS.ID AND TVGRANTS.PRIVID <> -1");
/* 4139 */     sql.append("ORDER BY  TABLE_SCHEM ASC, TABLE_NAME ASC,  PRIVILEGE ASC;");
/*      */     
/* 4141 */     DmdbStatement_bs stmt = null;
/* 4142 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 4145 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 4146 */         1007, 1);
/* 4147 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql.toString(), 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 4153 */       throw e;
/*      */     }
/* 4155 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getBestRowIdentifier(String catalog, String schema, String table, int scope, boolean nullable)
/*      */     throws SQLException
/*      */   {
/* 4215 */     if ((schema != null) && (schema.equals("")))
/*      */     {
/* 4217 */       throw new SQLException("There is not a table without a schema!");
/*      */     }
/* 4219 */     if ((table != null) && (table.equals(""))) {
/* 4220 */       return null;
/*      */     }
/* 4222 */     String sch = schema == null ? "%" : schema;
/* 4223 */     String tab = table == null ? "%" : table;
/*      */     String tab2;
/*      */     String sch2;
/*      */     String tab2;
/* 4227 */     if (this.connection.getCaseSensitive())
/*      */     {
/* 4229 */       String sch2 = StringUtil.getEscStringName(sch);
/* 4230 */       tab2 = StringUtil.getEscStringName(tab);
/*      */     }
/*      */     else
/*      */     {
/* 4234 */       sch2 = StringUtil.getEscStringName(sch).toUpperCase();
/* 4235 */       tab2 = StringUtil.getEscStringName(tab).toUpperCase();
/*      */     }
/*      */     
/* 4238 */     DmdbStatement_bs stmt = null;
/* 4239 */     DmdbResultSet_bs rs = null;
/* 4240 */     String sql = "";
/* 4241 */     ResultSet pk = getPrimaryKeys(catalog, schema, table);
/* 4242 */     if (pk.next())
/*      */     {
/* 4244 */       sql = 
/*      */       
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4251 */         sql + "SELECT /*+ MAX_OPT_N_TABLES(5) */ '" + scope + "' as \"SCOPE\",COLS.NAME AS COLUMN_NAME," + makeDataTypeClause("COLS.TYPE$", "COLS.SCALE") + "AS DATA_TYPE, " + makeDataTypeNameClause("COLS.TYPE$") + "AS TYPE_NAME, " + "CASE SF_GET_COLUMN_SIZE(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) WHEN -2 THEN NULL ELSE SF_GET_COLUMN_SIZE(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) END AS COLUMN_SIZE,CASE SF_GET_BUFFER_LEN(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) WHEN -2 THEN NULL ELSE SF_GET_BUFFER_LEN(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) END AS BUFFER_LENGTH,CASE SF_GET_DECIMAL_DIGITS(COLS.TYPE$, CAST (COLS.SCALE AS INT)) WHEN -2 THEN NULL ELSE SF_GET_DECIMAL_DIGITS(COLS.TYPE$, CAST (COLS.SCALE AS INT)) END AS DECIMAL_DIGITS,0 AS PSEUDO_COLUMN";
/* 4252 */       sql = sql + " FROM SYS.SYSCOLUMNS COLS WHERE COLS.NAME IN (SELECT COLS.NAME FROM SYS.SYSINDEXES SYSIND,SYS.SYSCOLUMNS COLS, (SELECT ID, PID, NAME FROM SYS.SYSOBJECTS WHERE SUBTYPE$='INDEX') AS IND_OBJ, SYS.SYSCONS AS CONS WHERE CONS.TABLEID = (SELECT ID FROM SYS.SYSOBJECTS WHERE SUBTYPE$='UTAB' AND NAME = '" + 
/*      */       
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4258 */         tab2 + 
/* 4259 */         "' AND SCHID = (SELECT ID FROM " + 
/* 4260 */         "SYS.SYSOBJECTS WHERE TYPE$='SCH' AND NAME = '" + 
/* 4261 */         sch2 + 
/* 4262 */         "')) AND COLS.ID = CONS.TABLEID AND IND_OBJ.ID = CONS.INDEXID AND IND_OBJ.ID = SYSIND.ID AND CONS.TYPE$ = 'P' AND SF_COL_IS_IDX_KEY(SYSIND.KEYNUM, SYSIND.KEYINFO,COLS.COLID)=1) " + 
/* 4263 */         "AND COLS.ID = (SELECT ID FROM " + "SYS.SYSOBJECTS WHERE SUBTYPE$='UTAB' AND NAME = '" + 
/* 4264 */         tab2 + "' AND SCHID = (SELECT ID FROM " + 
/* 4265 */         "SYS.SYSOBJECTS WHERE TYPE$='SCH' AND NAME = '" + sch2 + "'))";
/*      */       
/* 4267 */       if (!nullable)
/*      */       {
/* 4269 */         sql = sql + " AND COLS.NULLABLE$ = 'N'";
/*      */       }
/*      */     }
/*      */     else
/*      */     {
/* 4274 */       sql = 
/*      */       
/* 4276 */         sql + "select /*+ MAX_OPT_N_TABLES(5) */ '" + scope + "' as \"SCOPE\",'ROWID' as COLUMN_NAME,-2 as DATA_TYPE,'LONG' as TYPE_NAME,8 as COLUMN_SIZE,8 as BUFFER_LENGTH,0 as DECIMAL_DIGITS,0 as PSEUDO_COLUMN";
/*      */     }
/*      */     
/*      */     try
/*      */     {
/* 4281 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 4282 */         1007, 1);
/*      */       
/* 4284 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 4290 */       throw e;
/*      */     }
/* 4292 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4303 */   int bestRowTemporary = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4313 */   int bestRowTransaction = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4323 */   int bestRowSession = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4332 */   int bestRowUnknown = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4341 */   int bestRowNotPseudo = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4350 */   int bestRowPseudo = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getVersionColumns(String catalog, String schema, String table)
/*      */     throws SQLException
/*      */   {
/* 4401 */     DmdbStatement_bs stmt = null;
/* 4402 */     DmdbResultSet_bs rs = null;
/* 4403 */     if ((schema != null) && (schema.equals("")))
/*      */     {
/* 4405 */       throw new SQLException("There is not a table without a schema!");
/*      */     }
/* 4407 */     if ((table != null) && (table.equals(""))) {
/* 4408 */       return null;
/*      */     }
/* 4410 */     String sql = "";
/*      */     
/* 4412 */     sql = sql + "SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT NULL AS \"SCOPE\",COLS.NAME AS COLUMN_NAME, ";
/* 4413 */     sql = sql + makeDataTypeClause("COLS.TYPE$", "COLS.SCALE") + "AS DATA_TYPE, ";
/* 4414 */     sql = sql + makeDataTypeNameClause("COLS.TYPE$") + "AS TYPE_NAME, ";
/* 4415 */     sql = sql + "CASE SF_GET_COLUMN_SIZE(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) WHEN -2 THEN NULL ELSE SF_GET_COLUMN_SIZE(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) END AS COLUMN_SIZE,CASE SF_GET_BUFFER_LEN(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) WHEN -2 THEN NULL ELSE SF_GET_BUFFER_LEN(COLS.TYPE$, CAST (COLS.LENGTH$ AS INT), CAST (COLS.SCALE AS INT)) END AS BUFFER_LENGTH,CASE SF_GET_DECIMAL_DIGITS(COLS.TYPE$, CAST (COLS.SCALE AS INT)) WHEN -2 THEN NULL ELSE SF_GET_DECIMAL_DIGITS(COLS.TYPE$, CAST (COLS.SCALE AS INT)) END AS DECIMAL_DIGITS,0 AS PSEUDO_COLUMN";
/* 4416 */     sql = sql + " FROM SYS.SYSCOLUMNS COLS WHERE 1 = 2;";
/*      */     
/*      */     try
/*      */     {
/* 4420 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 4421 */         1007, 1);
/*      */       
/* 4423 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 4429 */       throw e;
/*      */     }
/* 4431 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4441 */   int versionColumnUnknown = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4450 */   int versionColumnNotPseudo = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4459 */   int versionColumnPseudo = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getPrimaryKeys(String catalog, String schema, String table)
/*      */     throws SQLException
/*      */   {
/* 4500 */     if (table == null)
/*      */     {
/* 4502 */       throw new SQLException("NULL TABLE NAME");
/*      */     }
/*      */     
/* 4505 */     if ((schema != null) && (schema.equals("")))
/* 4506 */       throw new SQLException("There is not a table without a schema!");
/* 4507 */     if ((table != null) && (table.equals(""))) {
/* 4508 */       return null;
/*      */     }
/* 4510 */     String schemaname = schema == null ? this.connection.getUserName() : 
/* 4511 */       StringUtil.getEscStringName(schema);
/* 4512 */     String tablename = StringUtil.getEscStringName(table);
/*      */     
/* 4514 */     String sql = "SELECT /*+ MAX_OPT_N_TABLES(5) */ NULL AS TABLE_CAT, '" + 
/* 4515 */       schemaname + 
/* 4516 */       "' AS TABLE_SCHEM,'" + 
/* 4517 */       tablename + 
/* 4518 */       "' AS TABLE_NAME,COLS.NAME AS COLUMN_NAME,SF_GET_INDEX_KEY_SEQ(INDS.KEYNUM, INDS.KEYINFO, COLS.COLID) AS KEY_SEQ,CONS.NAME AS PK_NAME" + 
/* 4519 */       " FROM " + 
/* 4520 */       "SYS.SYSINDEXES INDS, (SELECT OBJ.NAME, CON.ID, CON.TYPE$, CON.TABLEID, CON.COLID, CON.INDEXID FROM " + 
/* 4521 */       "SYS.SYSCONS AS CON, " + 
/* 4522 */       "SYS.SYSOBJECTS AS OBJ WHERE OBJ.SUBTYPE$='CONS' AND OBJ.ID=CON.ID) CONS, " + 
/* 4523 */       "SYS.SYSCOLUMNS COLS, (SELECT NAME ,ID FROM " + 
/* 4524 */       "SYS.SYSOBJECTS WHERE SUBTYPE$='UTAB' AND NAME = '" + 
/* 4525 */       tablename + 
/* 4526 */       "' AND SCHID=(SELECT ID FROM " + 
/* 4527 */       "SYS.SYSOBJECTS WHERE NAME = '" + 
/* 4528 */       schemaname + 
/* 4529 */       "' AND TYPE$='SCH')) TAB, (SELECT ID, NAME FROM " + 
/* 4530 */       "SYS.SYSOBJECTS WHERE SUBTYPE$='INDEX')OBJ_INDS WHERE CONS.TYPE$='P' " + 
/* 4531 */       "AND CONS.INDEXID=INDS.ID AND INDS.ID=OBJ_INDS.ID AND TAB.ID=COLS.ID AND CONS.TABLEID=TAB.ID " + 
/* 4532 */       "AND SF_COL_IS_IDX_KEY(INDS.KEYNUM, INDS.KEYINFO,COLS.COLID)=1" + 
/* 4533 */       " ORDER BY COLUMN_NAME ASC;";
/*      */     
/* 4535 */     DmdbStatement_bs stmt = null;
/* 4536 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 4539 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 4540 */         1007, 1);
/* 4541 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 4547 */       throw e;
/*      */     }
/* 4549 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getImportedKeys(String catalog, String schema, String table)
/*      */     throws SQLException
/*      */   {
/* 4638 */     if (table == null)
/*      */     {
/* 4640 */       throw new SQLException("NULL TABLE NAME");
/*      */     }
/*      */     
/* 4643 */     String schemaname = schema == null ? this.connection.getUserName() : schema;
/* 4644 */     if ((table != null) && (table.equals("")))
/* 4645 */       return null;
/* 4646 */     String tablename = table;
/*      */     String tab2;
/*      */     String sch2;
/*      */     String tab2;
/* 4650 */     if (this.connection.getCaseSensitive())
/*      */     {
/* 4652 */       String sch2 = StringUtil.getEscStringName(schemaname);
/* 4653 */       tab2 = StringUtil.getEscStringName(tablename);
/*      */     }
/*      */     else
/*      */     {
/* 4657 */       sch2 = StringUtil.getEscStringName(schemaname).toUpperCase();
/* 4658 */       tab2 = StringUtil.getEscStringName(tablename).toUpperCase();
/*      */     }
/*      */     
/*      */ 
/* 4662 */     StringBuffer strBuf = new StringBuffer();
/*      */     
/* 4664 */     strBuf.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ NULL AS PKTABLE_CAT,");
/* 4665 */     strBuf.append("T_REFED.SCHNAME AS PKTABLE_SCHEM, ");
/* 4666 */     strBuf.append("T_REFED.NAME AS PKTABLE_NAME, ");
/* 4667 */     strBuf.append("T_REFED.REFED_COL_NAME AS PKCOLUMN_NAME, NULL AS FKTABLE_CAT, '");
/* 4668 */     strBuf.append(sch2);
/* 4669 */     strBuf.append("' AS FKTABLE_SCHEM, '");
/* 4670 */     strBuf.append(tab2);
/* 4671 */     strBuf.append("' AS FKTABLE_NAME, T_REF.REF_COL_NAME AS FKCOLUMN_NAME, ");
/* 4672 */     strBuf.append("T_REF.REF_KEYNO AS KEY_SEQ, SF_GET_UPD_RULE(T_REF.FACTION) AS UPDATE_RULE, SF_GET_DEL_RULE(T_REF.FACTION) AS DELETE_RULE, ");
/* 4673 */     strBuf.append("T_REF.REF_CONS_NAME AS FK_NAME, T_REFED.REFED_CONS_NAME AS PK_NAME, ");
/* 4674 */     strBuf.append("0 AS DEFERRABILITY ");
/* 4675 */     strBuf.append("FROM ");
/*      */     
/* 4677 */     strBuf.append("(SELECT T_REF_CONS.FINDEXID AS REFED_ID, T_REF_CONS.NAME AS REF_CONS_NAME, ");
/* 4678 */     strBuf.append("SF_GET_INDEX_KEY_SEQ(T_REF_IND.KEYNUM, T_REF_IND.KEYINFO, T_REF_COL.COLID) AS REF_KEYNO, T_REF_COL.NAME AS REF_COL_NAME, T_REF_CONS.FACTION AS FACTION ");
/* 4679 */     strBuf.append("FROM ");
/* 4680 */     strBuf.append("(SELECT NAME, INDEXID, FINDEXID, TABLEID, FACTION, CONS.TYPE$ as TYPE FROM SYS.SYSCONS CONS, SYS.SYSOBJECTS OBJECTS WHERE CONS.ID = OBJECTS.ID) AS T_REF_CONS, ");
/* 4681 */     strBuf.append("(SELECT NAME, ID FROM SYS.SYSOBJECTS WHERE SUBTYPE$='UTAB' AND NAME= '");
/* 4682 */     strBuf.append(tab2);
/* 4683 */     strBuf.append("' AND SCHID = (SELECT ID FROM SYS.SYSOBJECTS WHERE TYPE$='SCH' AND NAME = '");
/* 4684 */     strBuf.append(sch2);
/* 4685 */     strBuf.append("')) AS T_REF_TAB, ");
/* 4686 */     strBuf.append("SYS.SYSINDEXES AS T_REF_IND, ");
/* 4687 */     strBuf.append("(SELECT ID, PID FROM SYS.SYSOBJECTS WHERE SUBTYPE$='INDEX') AS T_REF_INDS_OBJ, ");
/* 4688 */     strBuf.append("SYS.SYSCOLUMNS AS T_REF_COL ");
/* 4689 */     strBuf.append("WHERE ");
/* 4690 */     strBuf.append("T_REF_TAB.ID = T_REF_CONS.TABLEID AND T_REF_CONS.TYPE='F' AND T_REF_TAB.ID = T_REF_INDS_OBJ.PID AND T_REF_TAB.ID = T_REF_COL.ID ");
/* 4691 */     strBuf.append("AND T_REF_CONS.INDEXID = T_REF_INDS_OBJ.ID AND T_REF_IND.ID = T_REF_INDS_OBJ.ID AND SF_COL_IS_IDX_KEY(T_REF_IND.KEYNUM, T_REF_IND.KEYINFO, T_REF_COL.COLID)=1) AS T_REF, ");
/*      */     
/* 4693 */     strBuf.append("(SELECT T_REFED_CONS.INDEXID AS REFED_ID, T_REFED_TAB.SCH_NAME AS SCHNAME, ");
/* 4694 */     strBuf.append("T_REFED_TAB.TAB_NAME AS NAME, T_REFED_IND.ID AS REFED_IND_ID, ");
/* 4695 */     strBuf.append("T_REFED_CONS.NAME AS REFED_CONS_NAME, SF_GET_INDEX_KEY_SEQ(T_REFED_IND.KEYNUM, T_REFED_IND.KEYINFO, T_REFED_COL.COLID) AS REFED_KEYNO, ");
/* 4696 */     strBuf.append("T_REFED_COL.NAME AS REFED_COL_NAME FROM ");
/* 4697 */     strBuf.append("(SELECT NAME, INDEXID, FINDEXID, TABLEID, FACTION, CONS.TYPE$ as TYPE FROM SYS.SYSCONS CONS, SYS.SYSOBJECTS OBJECTS WHERE CONS.ID = OBJECTS.ID) AS T_REFED_CONS, ");
/* 4698 */     strBuf.append("(SELECT TAB.ID AS ID, TAB.NAME AS TAB_NAME, SCH.NAME AS SCH_NAME FROM ");
/* 4699 */     strBuf.append("SYS.SYSOBJECTS TAB, ");
/* 4700 */     strBuf.append("SYS.SYSOBJECTS SCH WHERE TAB.SUBTYPE$='UTAB' AND SCH.TYPE$='SCH' AND TAB.SCHID=SCH.ID) AS T_REFED_TAB, ");
/* 4701 */     strBuf.append("SYS.SYSINDEXES AS T_REFED_IND, (SELECT ID, PID, NAME FROM ");
/* 4702 */     strBuf.append("SYS.SYSOBJECTS WHERE SUBTYPE$='INDEX') AS T_REFED_INDS_OBJ, ");
/* 4703 */     strBuf.append("SYS.SYSCOLUMNS AS T_REFED_COL WHERE ");
/* 4704 */     strBuf.append("T_REFED_TAB.ID = T_REFED_CONS.TABLEID AND T_REFED_CONS.TYPE='P' AND T_REFED_TAB.ID = T_REFED_INDS_OBJ.PID AND T_REFED_TAB.ID = T_REFED_COL.ID");
/* 4705 */     strBuf.append(" AND T_REFED_CONS.INDEXID = T_REFED_INDS_OBJ.ID AND T_REFED_IND.ID = T_REFED_INDS_OBJ.ID AND SF_COL_IS_IDX_KEY(T_REFED_IND.KEYNUM, T_REFED_IND.KEYINFO, T_REFED_COL.COLID)=1) AS T_REFED ");
/*      */     
/* 4707 */     strBuf.append("WHERE T_REF.REFED_ID = T_REFED.REFED_ID AND T_REF.REF_KEYNO = T_REFED.REFED_KEYNO ");
/* 4708 */     strBuf.append("ORDER BY FKTABLE_CAT ASC, FKTABLE_SCHEM ASC, FKTABLE_NAME ASC, KEY_SEQ ASC");
/*      */     
/* 4710 */     String sql = strBuf.toString();
/*      */     
/* 4712 */     DmdbStatement_bs stmt = null;
/* 4713 */     DmdbResultSet_bs rs = null;
/*      */     
/*      */     try
/*      */     {
/* 4717 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 4718 */         1007, 1);
/* 4719 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 4725 */       throw e;
/*      */     }
/* 4727 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4741 */   int importedKeyCascade = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4754 */   int importedKeyRestrict = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4766 */   int importedKeySetNull = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4778 */   int importedKeyNoAction = 3;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4790 */   int importedKeySetDefault = 4;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4800 */   int importedKeyInitiallyDeferred = 5;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4810 */   int importedKeyInitiallyImmediate = 6;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 4820 */   int importedKeyNotDeferrable = 7;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getExportedKeys(String catalog, String schema, String table)
/*      */     throws SQLException
/*      */   {
/* 4908 */     if (table == null)
/*      */     {
/* 4910 */       throw new SQLException("NULL TABLE NAME");
/*      */     }
/*      */     
/* 4913 */     String schemaname = schema == null ? this.connection.getUserName() : schema;
/* 4914 */     if ((table != null) && (table.equals("")))
/* 4915 */       return null;
/* 4916 */     String tablename = table;
/*      */     String tab2;
/*      */     String sch2;
/*      */     String tab2;
/* 4920 */     if (this.connection.getCaseSensitive())
/*      */     {
/* 4922 */       String sch2 = StringUtil.getEscStringName(schemaname);
/* 4923 */       tab2 = StringUtil.getEscStringName(tablename);
/*      */     }
/*      */     else
/*      */     {
/* 4927 */       sch2 = StringUtil.getEscStringName(schemaname).toUpperCase();
/* 4928 */       tab2 = StringUtil.getEscStringName(tablename).toUpperCase();
/*      */     }
/*      */     
/* 4931 */     StringBuffer strBuf = new StringBuffer();
/*      */     
/* 4933 */     strBuf.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ NULL AS PKTABLE_CAT, '");
/* 4934 */     strBuf.append(sch2);
/* 4935 */     strBuf.append("' AS PKTABLE_SCHEM, '");
/* 4936 */     strBuf.append(tab2);
/* 4937 */     strBuf.append("' AS PKTABLE_NAME, T_REFED.REFED_COL_NAME AS PKCOLUMN_NAME, ");
/* 4938 */     strBuf.append("NULL AS FKTABLE_CAT, T_REF.REF_SCH_NAME AS FKTABLE_SCHEM, ");
/* 4939 */     strBuf.append("T_REF.REF_TAB_NAME AS FKTABLE_NAME, T_REF.REF_COL_NAME AS FKCOLUMN_NAME, ");
/* 4940 */     strBuf.append("T_REF.REF_KEYNO AS KEY_SEQ, SF_GET_UPD_RULE(T_REF.FACTION) AS UPDATE_RULE, SF_GET_DEL_RULE(T_REF.FACTION) AS DELETE_RULE, ");
/* 4941 */     strBuf.append("(SELECT NAME FROM SYS.SYSOBJECTS WHERE ID = T_REF.REF_CONS_ID) AS FK_NAME, (SELECT NAME FROM SYS.SYSOBJECTS WHERE ID = T_REFED.REFED_CONS_ID) AS PK_NAME, ");
/* 4942 */     strBuf.append("0 AS DEFERRABILITY FROM ");
/*      */     
/* 4944 */     strBuf.append("(SELECT T_REF_TAB.SCH_NAME AS REF_SCH_NAME, T_REF_TAB.TAB_NAME AS REF_TAB_NAME, ");
/* 4945 */     strBuf.append("T_REF_CONS.ID AS REF_CONS_ID, SF_GET_INDEX_KEY_SEQ(T_REF_IND.KEYNUM, T_REF_IND.KEYINFO, T_REF_COL.COLID) AS REF_KEYNO, ");
/* 4946 */     strBuf.append("T_REF_COL.NAME AS REF_COL_NAME, T_REF_CONS.FINDEXID AS REFED_ID, T_REF_CONS.FACTION AS FACTION FROM ");
/* 4947 */     strBuf.append("SYS.SYSCONS AS T_REF_CONS, ");
/* 4948 */     strBuf.append("(SELECT TAB.ID AS ID, TAB.NAME AS TAB_NAME, SCH.NAME AS SCH_NAME FROM ");
/* 4949 */     strBuf.append("SYS.SYSOBJECTS TAB, ");
/* 4950 */     strBuf.append("SYS.SYSOBJECTS SCH WHERE TAB.SUBTYPE$='UTAB' AND SCH.TYPE$='SCH' AND TAB.SCHID=SCH.ID) AS T_REF_TAB, ");
/* 4951 */     strBuf.append("SYS.SYSINDEXES AS T_REF_IND,");
/* 4952 */     strBuf.append("(SELECT ID, PID, NAME FROM ");
/* 4953 */     strBuf.append("SYS.SYSOBJECTS WHERE SUBTYPE$='INDEX') AS T_REF_INDS_OBJ, ");
/* 4954 */     strBuf.append("SYS.SYSCOLUMNS AS T_REF_COL WHERE ");
/* 4955 */     strBuf.append("T_REF_TAB.ID = T_REF_CONS.TABLEID AND T_REF_CONS.TYPE$='F' AND T_REF_TAB.ID = T_REF_INDS_OBJ.PID AND T_REF_TAB.ID = T_REF_COL.ID ");
/* 4956 */     strBuf.append("AND T_REF_CONS.INDEXID = T_REF_INDS_OBJ.ID AND T_REF_IND.ID = T_REF_INDS_OBJ.ID AND SF_COL_IS_IDX_KEY(T_REF_IND.KEYNUM, T_REF_IND.KEYINFO, T_REF_COL.COLID)=1) AS T_REF, ");
/*      */     
/* 4958 */     strBuf.append("(SELECT T_REFED_CONS.ID AS REFED_CONS_ID, SF_GET_INDEX_KEY_SEQ(T_REFED_IND.KEYNUM, T_REFED_IND.KEYINFO, T_REFED_COL.COLID) AS REFED_KEYNO, ");
/* 4959 */     strBuf.append("T_REFED_COL.NAME AS REFED_COL_NAME, T_REFED_CONS.INDEXID AS REFED_ID FROM ");
/* 4960 */     strBuf.append("SYS.SYSCONS AS T_REFED_CONS, (SELECT NAME, ID FROM ");
/* 4961 */     strBuf.append("SYS.SYSOBJECTS WHERE SUBTYPE$='UTAB' AND NAME= '");
/* 4962 */     strBuf.append(tab2);
/* 4963 */     strBuf.append("' AND SCHID=(SELECT ID FROM ");
/* 4964 */     strBuf.append("SYS.SYSOBJECTS WHERE TYPE$='SCH' AND NAME= '");
/* 4965 */     strBuf.append(sch2);
/* 4966 */     strBuf.append("')) AS T_REFED_TAB, ");
/* 4967 */     strBuf.append("SYS.SYSINDEXES AS T_REFED_IND, ");
/* 4968 */     strBuf.append("(SELECT ID, PID, NAME FROM ");
/* 4969 */     strBuf.append("SYS.SYSOBJECTS WHERE SUBTYPE$='INDEX') AS T_REFED_INDS_OBJ, ");
/* 4970 */     strBuf.append("SYS.SYSCOLUMNS AS T_REFED_COL WHERE ");
/* 4971 */     strBuf.append("T_REFED_TAB.ID = T_REFED_CONS.TABLEID AND T_REFED_CONS.TYPE$='P' AND T_REFED_TAB.ID = T_REFED_INDS_OBJ.PID AND T_REFED_TAB.ID = T_REFED_COL.ID ");
/* 4972 */     strBuf.append("AND T_REFED_CONS.INDEXID = T_REFED_INDS_OBJ.ID AND T_REFED_IND.ID = T_REFED_INDS_OBJ.ID AND SF_COL_IS_IDX_KEY(T_REFED_IND.KEYNUM, T_REFED_IND.KEYINFO, T_REFED_COL.COLID)=1) AS T_REFED ");
/*      */     
/* 4974 */     strBuf.append(" WHERE T_REF.REFED_ID = T_REFED.REFED_ID AND ");
/* 4975 */     strBuf.append("T_REF.REF_KEYNO = T_REFED.REFED_KEYNO ORDER BY FKTABLE_CAT ASC, ");
/* 4976 */     strBuf.append("FKTABLE_SCHEM ASC, FKTABLE_NAME ASC, KEY_SEQ ASC");
/*      */     
/* 4978 */     String sql = strBuf.toString();
/*      */     
/* 4980 */     DmdbStatement_bs stmt = null;
/* 4981 */     DmdbResultSet_bs rs = null;
/*      */     
/*      */     try
/*      */     {
/* 4985 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 4986 */         1007, 1);
/* 4987 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 4993 */       throw e;
/*      */     }
/* 4995 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getCrossReference(String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable)
/*      */     throws SQLException
/*      */   {
/* 5100 */     if ((primaryTable == null) || (foreignTable == null))
/*      */     {
/* 5102 */       throw new SQLException("NULL TABLE NAME");
/*      */     }
/*      */     
/* 5105 */     if (((primarySchema != null) && (primarySchema.equals(""))) || ((foreignSchema != null) && 
/* 5106 */       (foreignSchema.equals(""))))
/* 5107 */       throw new SQLException("There is not a table without a schema!");
/* 5108 */     if (((primaryTable != null) && (primaryTable.equals(""))) || ((foreignTable != null) && 
/* 5109 */       (foreignTable.equals("")))) {
/* 5110 */       return null;
/*      */     }
/* 5112 */     String pschemaname = primarySchema == null ? this.connection.getUserName() : primarySchema;
/* 5113 */     String ptablename = primaryTable;
/* 5114 */     String fschemaname = foreignSchema == null ? this.connection.getUserName() : foreignSchema;
/* 5115 */     String ftablename = foreignTable;
/*      */     String ftab2;
/*      */     String psch2;
/*      */     String ptab2;
/* 5119 */     String fsch2; String ftab2; if (this.connection.getCaseSensitive())
/*      */     {
/* 5121 */       String psch2 = StringUtil.getEscStringName(pschemaname);
/* 5122 */       String ptab2 = StringUtil.getEscStringName(ptablename);
/*      */       
/* 5124 */       String fsch2 = StringUtil.getEscStringName(fschemaname);
/* 5125 */       ftab2 = StringUtil.getEscStringName(ftablename);
/*      */     }
/*      */     else
/*      */     {
/* 5129 */       psch2 = StringUtil.getEscStringName(pschemaname).toUpperCase();
/* 5130 */       ptab2 = StringUtil.getEscStringName(ptablename).toUpperCase();
/*      */       
/* 5132 */       fsch2 = StringUtil.getEscStringName(fschemaname).toUpperCase();
/* 5133 */       ftab2 = StringUtil.getEscStringName(ftablename).toUpperCase();
/*      */     }
/*      */     
/* 5136 */     String sql = "SELECT /*+ MAX_OPT_N_TABLES(5) */ NULL AS PKTABLE_CAT, '" + 
/* 5137 */       psch2 + 
/* 5138 */       "' AS PKTABLE_SCHEM,'" + 
/* 5139 */       ptab2 + 
/* 5140 */       "' AS PKTABLE_NAME,T_REFED.REFED_COL_NAME AS PKCOLUMN_NAME, NULL AS FKTABLE_CAT, '" + 
/* 5141 */       fsch2 + 
/* 5142 */       "' AS FKTABLE_SCHEM,'" + 
/* 5143 */       ftab2 + 
/* 5144 */       "' AS FKTABLE_NAME,T_REF.REF_COL_NAME AS FKCOLUMN_NAME,T_REF.REF_KEYNO AS KEY_SEQ, SF_GET_UPD_RULE(FACTION) AS UPDATE_RULE, SF_GET_DEL_RULE(FACTION) AS DELETE_RULE,T_REF.REF_CONS_NAME AS FK_NAME,T_REFED.REFED_CONS_NAME AS PK_NAME,0 AS DEFERRABILITY";
/*      */     
/* 5146 */     sql = sql + " FROM (SELECT T_REF_CONS.FINDEXID AS REFED_IND_ID,T_REF_INDS_OBJ.NAME AS REF_CONS_NAME, SF_GET_INDEX_KEY_SEQ(T_REF_INDS.KEYNUM, T_REF_INDS.KEYINFO, T_REF_COL.COLID) AS REF_KEYNO,T_REF_COL.NAME AS REF_COL_NAME, T_REF_CONS.FACTION AS FACTION FROM SYS.SYSCONS AS T_REF_CONS,(SELECT NAME,ID FROM SYS.SYSOBJECTS WHERE SUBTYPE$='UTAB' AND NAME = '" + 
/*      */     
/*      */ 
/* 5149 */       ftab2 + 
/* 5150 */       "' AND SCHID = (SELECT ID FROM " + 
/* 5151 */       "SYS.SYSOBJECTS WHERE TYPE$='SCH' AND NAME = '" + 
/* 5152 */       fsch2 + 
/* 5153 */       "')) AS T_REF_TAB, " + 
/* 5154 */       "SYS.SYSINDEXES AS T_REF_INDS, (SELECT ID, PID, NAME FROM " + 
/* 5155 */       "SYS.SYSOBJECTS WHERE SUBTYPE$='INDEX') AS T_REF_INDS_OBJ, " + 
/* 5156 */       "SYS.SYSCOLUMNS AS T_REF_COL WHERE " + 
/* 5157 */       "T_REF_TAB.ID = T_REF_CONS.TABLEID AND T_REF_CONS.TYPE$='F' AND T_REF_TAB.ID = T_REF_INDS_OBJ.PID AND T_REF_TAB.ID = T_REF_COL.ID " + 
/* 5158 */       "AND T_REF_CONS.INDEXID = T_REF_INDS_OBJ.ID AND T_REF_INDS.ID = T_REF_INDS_OBJ.ID AND SF_COL_IS_IDX_KEY(T_REF_INDS.KEYNUM, T_REF_INDS.KEYINFO, T_REF_COL.COLID)=1) AS T_REF, ";
/*      */     
/* 5160 */     sql = sql + "(SELECT T_REFED_INDS.ID AS REFED_IND_ID,T_REFED_INDS_OBJ.NAME AS REFED_CONS_NAME, SF_GET_INDEX_KEY_SEQ(T_REFED_INDS.KEYNUM, T_REFED_INDS.KEYINFO, T_REFED_COL.COLID) AS REFED_KEYNO,T_REFED_COL.NAME AS REFED_COL_NAME FROM SYS.SYSCONS AS T_REFED_CONS, (SELECT NAME, ID FROM SYS.SYSOBJECTS WHERE SUBTYPE$='UTAB' AND NAME = '" + 
/*      */     
/*      */ 
/* 5163 */       ptab2 + 
/* 5164 */       "' AND SCHID = (SELECT ID FROM " + 
/* 5165 */       "SYS.SYSOBJECTS WHERE TYPE$='SCH' AND NAME = '" + 
/* 5166 */       psch2 + 
/* 5167 */       "' )) AS T_REFED_TAB, " + 
/* 5168 */       "SYS.SYSINDEXES AS T_REFED_INDS, (SELECT ID, PID, NAME FROM " + 
/* 5169 */       "SYS.SYSOBJECTS WHERE SUBTYPE$='INDEX') AS T_REFED_INDS_OBJ," + 
/* 5170 */       "SYS.SYSCOLUMNS AS T_REFED_COL WHERE " + 
/* 5171 */       "T_REFED_TAB.ID = T_REFED_CONS.TABLEID AND T_REFED_CONS.TYPE$='P' AND T_REFED_TAB.ID = T_REFED_INDS_OBJ.PID AND T_REFED_TAB.ID = T_REFED_COL.ID " + 
/* 5172 */       "AND T_REFED_CONS.INDEXID = T_REFED_INDS_OBJ.ID AND T_REFED_INDS.ID = T_REFED_INDS_OBJ.ID AND SF_COL_IS_IDX_KEY(T_REFED_INDS.KEYNUM, T_REFED_INDS.KEYINFO, T_REFED_COL.COLID)=1) AS T_REFED";
/* 5173 */     sql = sql + " WHERE T_REF.REFED_IND_ID = T_REFED.REFED_IND_ID AND T_REF.REF_KEYNO = T_REFED.REFED_KEYNO ORDER BY FKTABLE_CAT ASC,FKTABLE_SCHEM ASC,FKTABLE_NAME ASC,KEY_SEQ ASC";
/*      */     
/* 5175 */     DmdbStatement_bs stmt = null;
/* 5176 */     DmdbResultSet_bs rs = null;
/*      */     
/*      */     try
/*      */     {
/* 5180 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 5181 */         1007, 1);
/* 5182 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 5188 */       throw e;
/*      */     }
/* 5190 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getTypeInfo()
/*      */     throws SQLException
/*      */   {
/* 5248 */     String sql = "SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT TYPE_NAME AS TYPE_NAME,";
/* 5249 */     sql = sql + " CASE DATA_TYPE WHEN 101 THEN 2000 WHEN 102 THEN 2000 WHEN 103 THEN 2000 WHEN 104 THEN 2000 WHEN 105 THEN 2000 WHEN 106 THEN 2000 WHEN 107 THEN 2000 WHEN 108 THEN 2000 WHEN 109 THEN 2000 WHEN 110 THEN 2000 WHEN 111 THEN 2000 WHEN 112 THEN 2000 WHEN 113 THEN 2000 ELSE DATA_TYPE END AS DATA_TYPE,";
/* 5250 */     sql = sql + " COLUMN_SIZE AS \"PRECISION\",LITERAL_PREFIX AS LITERAL_PREFIX,LITERAL_SUFFIX AS LITERAL_SUFFIX,CREATE_PARAMS AS CREATE_PARAMS,NULLABLE$ AS NULLABLE,CASE_SENSITIVE AS CASE_SENSITIVE,SEARCHABLE AS SEARCHABLE,UNSIGNED_ATTRIBUTE AS UNSIGNED_ATTRIBUTE,FIXED_PREC_SCALE AS FIXED_PREC_SCALE,AUTO_UNIQUE_VALUE AS AUTO_INCREMENT,LOCAL_TYPE_NAME AS LOCAL_TYPE_NAME,MINIMUM_SCALE AS MINIMUM_SCALE,MAXIMUM_SCALE AS MAXIMUM_SCALE,NULL AS SQL_DATA_TYPE,NULL AS SQL_DATETIME_SUB,NUM_PREC_RADIX AS NUM_PREC_RADIX";
/* 5251 */     sql = sql + " FROM SYS.SYSTYPEINFOS WHERE (TYPE_VERSION = 'O3' OR TYPE_VERSION = 'J3') AND TYPE_NAME <> 'double precision' AND TYPE_NAME <> 'image' AND TYPE_NAME <> 'text' AND TYPE_NAME <> 'money'";
/* 5252 */     sql = sql + " ORDER BY DATA_TYPE;";
/*      */     
/* 5254 */     DmdbStatement_bs stmt = null;
/* 5255 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 5258 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 5259 */         1007, 1);
/* 5260 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 5266 */       throw e;
/*      */     }
/* 5268 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5279 */   int typeNoNulls = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5288 */   int typeNullable = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5298 */   int typeNullableUnknown = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5308 */   int typePredNone = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5318 */   int typePredChar = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5328 */   int typePredBasic = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5338 */   int typeSearchable = 3;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate)
/*      */     throws SQLException
/*      */   {
/* 5412 */     if ((schema != null) && (schema.equals("")))
/* 5413 */       throw new SQLException("There is not a table without a schema!");
/* 5414 */     if ((table != null) && (table.equals(""))) {
/* 5415 */       return null;
/*      */     }
/* 5417 */     String schemaname = schema == null ? "%" : StringUtil.getEscStringName(schema);
/* 5418 */     String tablename = table == null ? "%" : StringUtil.getEscStringName(table);
/*      */     
/* 5420 */     String schemaClause = makeSchemaClause(schemaname);
/* 5421 */     String tableClause = makeTableClause_utab(tablename);
/*      */     
/* 5423 */     StringBuffer sql = new StringBuffer();
/* 5424 */     sql.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ DISTINCT NULL");
/* 5425 */     sql.append(" AS TABLE_CAT,USERS.NAME AS TABLE_SCHEM,TAB.NAME AS TABLE_NAME, ");
/* 5426 */     sql.append("CASE INDS.ISUNIQUE WHEN 'Y' THEN 0 ELSE 1 END AS NON_UNIQUE, NULL AS INDEX_QUALIFIER, ");
/* 5427 */     sql.append("OBJ_INDS.NAME AS INDEX_NAME, ");
/* 5428 */     sql.append("CASE INDS.XTYPE & 0x01 WHEN 0 THEN 1 ");
/*      */     
/*      */ 
/* 5431 */     sql.append("ELSE 3 END AS \"TYPE\", ");
/* 5432 */     sql.append("SF_GET_INDEX_KEY_SEQ(INDS.KEYNUM, INDS.KEYINFO, COLS.COLID) AS ORDINAL_POSITION, ");
/* 5433 */     sql.append("COLS.NAME AS COLUMN_NAME, ");
/* 5434 */     sql.append("SF_GET_INDEX_KEY_ORDER(INDS.KEYNUM, INDS.KEYINFO, COLS.COLID) AS ASC_OR_DESC, ");
/* 5435 */     sql.append("0 AS CARDINALITY, 0 AS PAGES, NULL AS FILTER_CONDITION ");
/* 5436 */     sql.append(" FROM ");
/* 5437 */     sql.append(schemaClause);
/* 5438 */     sql.append(" AS USERS, ");
/* 5439 */     sql.append(tableClause);
/* 5440 */     sql.append(" AS TAB, ");
/* 5441 */     sql.append("(SELECT ID, PID, NAME FROM SYS.SYSOBJECTS WHERE SUBTYPE$='INDEX') AS OBJ_INDS,");
/* 5442 */     sql.append("SYS.SYSINDEXES AS INDS,");
/* 5443 */     sql.append("SYS.SYSCOLUMNS AS COLS ");
/* 5444 */     sql.append("WHERE TAB.ID=COLS.ID AND TAB.ID=OBJ_INDS.PID ");
/* 5445 */     sql.append("AND INDS.ID=OBJ_INDS.ID AND TAB.SCHID = USERS.ID AND ");
/* 5446 */     sql.append("SF_COL_IS_IDX_KEY(INDS.KEYNUM, INDS.KEYINFO, COLS.COLID)=1");
/*      */     
/* 5448 */     if (unique) {
/* 5449 */       sql.append(" AND INDS.ISUNIQUE = 'Y' ORDER BY NON_UNIQUE ASC,TYPE ASC,INDEX_NAME ASC,ORDINAL_POSITION ASC;");
/*      */     } else {
/* 5451 */       sql.append(" ORDER BY NON_UNIQUE ASC,TYPE ASC,INDEX_NAME ASC,ORDINAL_POSITION ASC;");
/*      */     }
/* 5453 */     DmdbStatement_bs stmt = null;
/* 5454 */     DmdbResultSet_bs rs = null;
/*      */     
/*      */     try
/*      */     {
/* 5458 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 5459 */         1007, 1);
/* 5460 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql.toString(), 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 5466 */       throw e;
/*      */     }
/* 5468 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5479 */   short tableIndexStatistic = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5488 */   short tableIndexClustered = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5497 */   short tableIndexHashed = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 5507 */   short tableIndexOther = 3;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsResultSetType(int type)
/*      */     throws SQLException
/*      */   {
/* 5529 */     return (type == 1003) || (type == 1004);
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsResultSetConcurrency(int type, int concurrency)
/*      */     throws SQLException
/*      */   {
/* 5559 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean ownUpdatesAreVisible(int type)
/*      */     throws SQLException
/*      */   {
/* 5584 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean ownDeletesAreVisible(int type)
/*      */     throws SQLException
/*      */   {
/* 5608 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean ownInsertsAreVisible(int type)
/*      */     throws SQLException
/*      */   {
/* 5632 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean othersUpdatesAreVisible(int type)
/*      */     throws SQLException
/*      */   {
/* 5656 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean othersDeletesAreVisible(int type)
/*      */     throws SQLException
/*      */   {
/* 5680 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean othersInsertsAreVisible(int type)
/*      */     throws SQLException
/*      */   {
/* 5704 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean updatesAreDetected(int type)
/*      */     throws SQLException
/*      */   {
/* 5729 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean deletesAreDetected(int type)
/*      */     throws SQLException
/*      */   {
/* 5756 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean insertsAreDetected(int type)
/*      */     throws SQLException
/*      */   {
/* 5781 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsBatchUpdates()
/*      */     throws SQLException
/*      */   {
/* 5800 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types)
/*      */     throws SQLException
/*      */   {
/* 5862 */     DmdbColumn[] fields = new DmdbColumn[7];
/*      */     
/*      */ 
/* 5865 */     fields[0] = new DmdbColumn(this.connection);
/* 5866 */     fields[0].getDesc().setName("TYPE_CAT");
/* 5867 */     fields[0].getDesc().setDType(2);
/* 5868 */     fields[0].getDesc().setPrec(128);
/* 5869 */     fields[0].getDesc().setScale(0);
/* 5870 */     fields[0].getDesc().setNullable(true);
/*      */     
/* 5872 */     fields[1] = new DmdbColumn(this.connection);
/* 5873 */     fields[1].getDesc().setName("TYPE_SCHEM");
/* 5874 */     fields[1].getDesc().setDType(2);
/* 5875 */     fields[1].getDesc().setPrec(128);
/* 5876 */     fields[1].getDesc().setScale(0);
/* 5877 */     fields[1].getDesc().setNullable(true);
/*      */     
/* 5879 */     fields[2] = new DmdbColumn(this.connection);
/* 5880 */     fields[2].getDesc().setName("TYPE_NAME");
/* 5881 */     fields[2].getDesc().setDType(2);
/* 5882 */     fields[2].getDesc().setPrec(128);
/* 5883 */     fields[2].getDesc().setScale(0);
/* 5884 */     fields[2].getDesc().setNullable(false);
/*      */     
/* 5886 */     fields[3] = new DmdbColumn(this.connection);
/* 5887 */     fields[3].getDesc().setName("CLASS_NAME");
/* 5888 */     fields[3].getDesc().setDType(2);
/* 5889 */     fields[3].getDesc().setPrec(128);
/* 5890 */     fields[3].getDesc().setScale(0);
/* 5891 */     fields[3].getDesc().setNullable(false);
/*      */     
/* 5893 */     fields[4] = new DmdbColumn(this.connection);
/* 5894 */     fields[4].getDesc().setName("DATA_TYPE");
/* 5895 */     fields[4].getDesc().setDType(7);
/* 5896 */     fields[4].getDesc().setPrec(4);
/* 5897 */     fields[4].getDesc().setScale(0);
/* 5898 */     fields[4].getDesc().setNullable(false);
/*      */     
/* 5900 */     fields[5] = new DmdbColumn(this.connection);
/* 5901 */     fields[5].getDesc().setName("REMARKS");
/* 5902 */     fields[5].getDesc().setDType(2);
/* 5903 */     fields[5].getDesc().setPrec(1024);
/* 5904 */     fields[5].getDesc().setScale(0);
/* 5905 */     fields[5].getDesc().setNullable(false);
/*      */     
/* 5907 */     fields[6] = new DmdbColumn(this.connection);
/* 5908 */     fields[6].getDesc().setName("BASE_TYPE");
/* 5909 */     fields[6].getDesc().setDType(6);
/* 5910 */     fields[6].getDesc().setPrec(2);
/* 5911 */     fields[6].getDesc().setScale(0);
/* 5912 */     fields[6].getDesc().setNullable(false);
/*      */     
/* 5914 */     DmdbInfo dmInfo = new DmdbInfo();
/* 5915 */     dmInfo.setColumnsInfo(fields);
/*      */     
/* 5917 */     String s1 = catalog;String s2 = schemaPattern;
/* 5918 */     String s3 = typeNamePattern;
/*      */     
/* 5920 */     if (s1 == null)
/*      */     {
/* 5922 */       s1 = this.connection.getCatalog();
/*      */     }
/* 5924 */     if (s2 == null)
/*      */     {
/* 5926 */       s2 = "%";
/*      */     }
/* 5928 */     if (s3 == null)
/*      */     {
/* 5930 */       s3 = "%";
/*      */     }
/*      */     
/* 5933 */     dmInfo.setRowCount(0L);
/*      */     DmdbResultSet_bs rs;
/* 5935 */     DmdbResultSet_bs rs; if (this.connection.checkConnToStandby()) {
/* 5936 */       rs = new DmdbResultSet_bs(dmInfo, true);
/*      */     } else {
/* 5938 */       rs = new DmdbResultSet_bs(dmInfo, false);
/*      */     }
/* 5940 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public Connection getConnection()
/*      */     throws SQLException
/*      */   {
/* 5959 */     return this.connection;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsSavepoints()
/*      */     throws SQLException
/*      */   {
/* 5980 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsNamedParameters()
/*      */     throws SQLException
/*      */   {
/* 6000 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsMultipleOpenResults()
/*      */     throws SQLException
/*      */   {
/* 6022 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsGetGeneratedKeys()
/*      */     throws SQLException
/*      */   {
/* 6042 */     return true;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getSuperTypes(String catalog, String schemaPattern, String typeNamePattern)
/*      */     throws SQLException
/*      */   {
/* 6097 */     DmdbColumn[] field = new DmdbColumn[6];
/*      */     
/*      */ 
/* 6100 */     field[0] = new DmdbColumn(this.connection);
/* 6101 */     field[0].getDesc().setName("TYPE_CAT");
/* 6102 */     field[0].getDesc().setDType(2);
/* 6103 */     field[0].getDesc().setPrec(128);
/* 6104 */     field[0].getDesc().setScale(0);
/* 6105 */     field[0].getDesc().setNullable(true);
/*      */     
/* 6107 */     field[1] = new DmdbColumn(this.connection);
/* 6108 */     field[1].getDesc().setName("TYPE_SCHEM");
/* 6109 */     field[1].getDesc().setDType(2);
/* 6110 */     field[1].getDesc().setPrec(128);
/* 6111 */     field[1].getDesc().setScale(0);
/* 6112 */     field[1].getDesc().setNullable(true);
/*      */     
/* 6114 */     field[2] = new DmdbColumn(this.connection);
/* 6115 */     field[2].getDesc().setName("TYPE_NAME");
/* 6116 */     field[2].getDesc().setDType(2);
/* 6117 */     field[2].getDesc().setPrec(128);
/* 6118 */     field[2].getDesc().setScale(0);
/* 6119 */     field[2].getDesc().setNullable(false);
/*      */     
/* 6121 */     field[3] = new DmdbColumn(this.connection);
/* 6122 */     field[3].getDesc().setName("SUPERTYPE_CAT");
/* 6123 */     field[3].getDesc().setDType(2);
/* 6124 */     field[3].getDesc().setPrec(128);
/* 6125 */     field[3].getDesc().setScale(0);
/* 6126 */     field[3].getDesc().setNullable(true);
/*      */     
/* 6128 */     field[4] = new DmdbColumn(this.connection);
/* 6129 */     field[4].getDesc().setName("SUPERTYPE_SCHEM");
/* 6130 */     field[4].getDesc().setDType(2);
/* 6131 */     field[4].getDesc().setPrec(128);
/* 6132 */     field[4].getDesc().setScale(0);
/* 6133 */     field[4].getDesc().setNullable(true);
/*      */     
/* 6135 */     field[5] = new DmdbColumn(this.connection);
/* 6136 */     field[5].getDesc().setName("SUPERTYPE_NAME");
/* 6137 */     field[5].getDesc().setDType(2);
/* 6138 */     field[5].getDesc().setPrec(128);
/* 6139 */     field[5].getDesc().setScale(0);
/* 6140 */     field[5].getDesc().setNullable(false);
/*      */     
/* 6142 */     DmdbInfo dmInfo = new DmdbInfo();
/* 6143 */     dmInfo.setColumnsInfo(field);
/*      */     
/* 6145 */     String s1 = catalog;String s2 = schemaPattern;
/* 6146 */     String s3 = typeNamePattern;
/*      */     
/* 6148 */     if (s1 == null)
/*      */     {
/* 6150 */       s1 = this.connection.getCatalog();
/*      */     }
/* 6152 */     if (s2 == null)
/*      */     {
/* 6154 */       s2 = "%";
/*      */     }
/* 6156 */     if (s3 == null)
/*      */     {
/* 6158 */       s3 = "%";
/*      */     }
/*      */     
/* 6161 */     dmInfo.setRowCount(0L);
/* 6162 */     DmdbResultSet_bs rs; DmdbResultSet_bs rs; if (this.connection.checkConnToStandby()) {
/* 6163 */       rs = new DmdbResultSet_bs(dmInfo, true);
/*      */     } else {
/* 6165 */       rs = new DmdbResultSet_bs(dmInfo, false);
/*      */     }
/* 6167 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern)
/*      */     throws SQLException
/*      */   {
/* 6218 */     DmdbColumn[] field = new DmdbColumn[4];
/*      */     
/*      */ 
/* 6221 */     field[0] = new DmdbColumn(this.connection);
/* 6222 */     field[0].getDesc().setName("TABLE_CAT");
/* 6223 */     field[0].getDesc().setDType(2);
/* 6224 */     field[0].getDesc().setPrec(128);
/* 6225 */     field[0].getDesc().setScale(0);
/* 6226 */     field[0].getDesc().setNullable(true);
/*      */     
/* 6228 */     field[1] = new DmdbColumn(this.connection);
/* 6229 */     field[1].getDesc().setName("TABLE_SCHEM");
/* 6230 */     field[1].getDesc().setDType(2);
/* 6231 */     field[1].getDesc().setPrec(128);
/* 6232 */     field[1].getDesc().setScale(0);
/* 6233 */     field[1].getDesc().setNullable(true);
/*      */     
/* 6235 */     field[2] = new DmdbColumn(this.connection);
/* 6236 */     field[2].getDesc().setName("TABLE_NAME");
/* 6237 */     field[2].getDesc().setDType(2);
/* 6238 */     field[2].getDesc().setPrec(128);
/* 6239 */     field[2].getDesc().setScale(0);
/* 6240 */     field[2].getDesc().setNullable(false);
/*      */     
/* 6242 */     field[3] = new DmdbColumn(this.connection);
/* 6243 */     field[3].getDesc().setName("SUPERTABLE_NAME");
/* 6244 */     field[3].getDesc().setDType(2);
/* 6245 */     field[3].getDesc().setPrec(128);
/* 6246 */     field[3].getDesc().setScale(0);
/* 6247 */     field[3].getDesc().setNullable(false);
/*      */     
/* 6249 */     DmdbInfo dmInfo = new DmdbInfo();
/* 6250 */     dmInfo.setColumnsInfo(field);
/*      */     
/* 6252 */     String s1 = catalog;String s2 = schemaPattern;
/* 6253 */     String s3 = tableNamePattern;
/*      */     
/* 6255 */     if (s1 == null)
/*      */     {
/* 6257 */       s1 = this.connection.getCatalog();
/*      */     }
/* 6259 */     if (s2 == null)
/*      */     {
/* 6261 */       s2 = "%";
/*      */     }
/* 6263 */     if (s3 == null)
/*      */     {
/* 6265 */       s3 = "%";
/*      */     }
/*      */     
/* 6268 */     dmInfo.setRowCount(0L);
/* 6269 */     DmdbResultSet_bs rs; DmdbResultSet_bs rs; if (this.connection.checkConnToStandby()) {
/* 6270 */       rs = new DmdbResultSet_bs(dmInfo, true);
/*      */     } else {
/* 6272 */       rs = new DmdbResultSet_bs(dmInfo, false);
/*      */     }
/* 6274 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 6284 */   short attributeNoNulls = 0;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 6293 */   short attributeNullable = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 6302 */   short attributeNullableUnknown = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public ResultSet getAttributes(String catalog, String schemaPattern, String typeNamePattern, String attributeNamePattern)
/*      */     throws SQLException
/*      */   {
/* 6389 */     DmdbColumn[] field = new DmdbColumn[21];
/*      */     
/*      */ 
/* 6392 */     field[0] = new DmdbColumn(this.connection);
/* 6393 */     field[0].getDesc().setName("TYPE_CAT");
/* 6394 */     field[0].getDesc().setDType(2);
/* 6395 */     field[0].getDesc().setPrec(128);
/* 6396 */     field[0].getDesc().setScale(0);
/* 6397 */     field[0].getDesc().setNullable(true);
/*      */     
/* 6399 */     field[1] = new DmdbColumn(this.connection);
/* 6400 */     field[1].getDesc().setName("TYPE_SCHEM");
/* 6401 */     field[1].getDesc().setDType(2);
/* 6402 */     field[1].getDesc().setPrec(128);
/* 6403 */     field[1].getDesc().setScale(0);
/* 6404 */     field[1].getDesc().setNullable(true);
/*      */     
/* 6406 */     field[2] = new DmdbColumn(this.connection);
/* 6407 */     field[2].getDesc().setName("TYPE_NAME");
/* 6408 */     field[2].getDesc().setDType(2);
/* 6409 */     field[2].getDesc().setPrec(128);
/* 6410 */     field[2].getDesc().setScale(0);
/* 6411 */     field[2].getDesc().setNullable(false);
/*      */     
/* 6413 */     field[3] = new DmdbColumn(this.connection);
/* 6414 */     field[3].getDesc().setName("ATTR_NAME");
/* 6415 */     field[3].getDesc().setDType(2);
/* 6416 */     field[3].getDesc().setPrec(128);
/* 6417 */     field[3].getDesc().setScale(0);
/* 6418 */     field[3].getDesc().setNullable(false);
/*      */     
/* 6420 */     field[4] = new DmdbColumn(this.connection);
/* 6421 */     field[4].getDesc().setName("DATA_TYPE");
/* 6422 */     field[4].getDesc().setDType(7);
/* 6423 */     field[4].getDesc().setPrec(4);
/* 6424 */     field[4].getDesc().setScale(0);
/* 6425 */     field[4].getDesc().setNullable(false);
/*      */     
/* 6427 */     field[5] = new DmdbColumn(this.connection);
/* 6428 */     field[5].getDesc().setName("ATTR_TYPE_NAME");
/* 6429 */     field[5].getDesc().setDType(2);
/* 6430 */     field[5].getDesc().setPrec(128);
/* 6431 */     field[5].getDesc().setScale(0);
/* 6432 */     field[5].getDesc().setNullable(false);
/*      */     
/* 6434 */     field[6] = new DmdbColumn(this.connection);
/* 6435 */     field[6].getDesc().setName("ATTR_SIZE");
/* 6436 */     field[6].getDesc().setDType(7);
/* 6437 */     field[6].getDesc().setPrec(4);
/* 6438 */     field[6].getDesc().setScale(0);
/* 6439 */     field[6].getDesc().setNullable(false);
/*      */     
/* 6441 */     field[7] = new DmdbColumn(this.connection);
/* 6442 */     field[7].getDesc().setName("DECIMAL_DIGITS");
/* 6443 */     field[7].getDesc().setDType(7);
/* 6444 */     field[7].getDesc().setPrec(4);
/* 6445 */     field[7].getDesc().setScale(0);
/* 6446 */     field[7].getDesc().setNullable(false);
/*      */     
/* 6448 */     field[8] = new DmdbColumn(this.connection);
/* 6449 */     field[8].getDesc().setName("NUM_PREC_RADIX");
/* 6450 */     field[8].getDesc().setDType(7);
/* 6451 */     field[8].getDesc().setPrec(4);
/* 6452 */     field[8].getDesc().setScale(0);
/* 6453 */     field[8].getDesc().setNullable(false);
/*      */     
/* 6455 */     field[9] = new DmdbColumn(this.connection);
/* 6456 */     field[9].getDesc().setName("NULLABLE");
/* 6457 */     field[9].getDesc().setDType(7);
/* 6458 */     field[9].getDesc().setPrec(4);
/* 6459 */     field[9].getDesc().setScale(0);
/* 6460 */     field[9].getDesc().setNullable(false);
/*      */     
/* 6462 */     field[10] = new DmdbColumn(this.connection);
/* 6463 */     field[10].getDesc().setName("REMARKS");
/* 6464 */     field[10].getDesc().setDType(2);
/* 6465 */     field[10].getDesc().setPrec(128);
/* 6466 */     field[10].getDesc().setScale(0);
/* 6467 */     field[10].getDesc().setNullable(false);
/*      */     
/* 6469 */     field[11] = new DmdbColumn(this.connection);
/* 6470 */     field[11].getDesc().setName("ATTR_DEF");
/* 6471 */     field[11].getDesc().setDType(2);
/* 6472 */     field[11].getDesc().setPrec(128);
/* 6473 */     field[11].getDesc().setScale(0);
/* 6474 */     field[11].getDesc().setNullable(true);
/*      */     
/*      */ 
/* 6477 */     field[12] = new DmdbColumn(this.connection);
/* 6478 */     field[12].getDesc().setName("SQL_DATA_TYPE");
/* 6479 */     field[12].getDesc().setDType(7);
/* 6480 */     field[12].getDesc().setPrec(4);
/* 6481 */     field[12].getDesc().setScale(0);
/* 6482 */     field[12].getDesc().setNullable(false);
/*      */     
/*      */ 
/* 6485 */     field[13] = new DmdbColumn(this.connection);
/* 6486 */     field[13].getDesc().setName("SQL_DATETIME_SUB");
/* 6487 */     field[13].getDesc().setDType(7);
/* 6488 */     field[13].getDesc().setPrec(4);
/* 6489 */     field[13].getDesc().setScale(0);
/* 6490 */     field[13].getDesc().setNullable(false);
/*      */     
/* 6492 */     field[14] = new DmdbColumn(this.connection);
/* 6493 */     field[14].getDesc().setName("CHAR_OCTET_LENGTH");
/* 6494 */     field[14].getDesc().setDType(7);
/* 6495 */     field[14].getDesc().setPrec(4);
/* 6496 */     field[14].getDesc().setScale(0);
/* 6497 */     field[14].getDesc().setNullable(false);
/*      */     
/* 6499 */     field[15] = new DmdbColumn(this.connection);
/* 6500 */     field[15].getDesc().setName("ORDINAL_POSITION");
/* 6501 */     field[15].getDesc().setDType(7);
/* 6502 */     field[15].getDesc().setPrec(4);
/* 6503 */     field[15].getDesc().setScale(0);
/* 6504 */     field[15].getDesc().setNullable(false);
/*      */     
/* 6506 */     field[16] = new DmdbColumn(this.connection);
/* 6507 */     field[16].getDesc().setName("IS_NULLABLE");
/* 6508 */     field[16].getDesc().setDType(2);
/* 6509 */     field[16].getDesc().setPrec(128);
/* 6510 */     field[16].getDesc().setScale(0);
/* 6511 */     field[16].getDesc().setNullable(false);
/*      */     
/* 6513 */     field[17] = new DmdbColumn(this.connection);
/* 6514 */     field[17].getDesc().setName("SCOPE_CATALOG");
/* 6515 */     field[17].getDesc().setDType(2);
/* 6516 */     field[17].getDesc().setPrec(128);
/* 6517 */     field[17].getDesc().setScale(0);
/* 6518 */     field[17].getDesc().setNullable(false);
/*      */     
/* 6520 */     field[18] = new DmdbColumn(this.connection);
/* 6521 */     field[18].getDesc().setName("SCOPE_SCHEMA");
/* 6522 */     field[18].getDesc().setDType(2);
/* 6523 */     field[18].getDesc().setPrec(128);
/* 6524 */     field[18].getDesc().setScale(0);
/* 6525 */     field[18].getDesc().setNullable(false);
/*      */     
/* 6527 */     field[19] = new DmdbColumn(this.connection);
/* 6528 */     field[19].getDesc().setName("SCOPE_TABLE");
/* 6529 */     field[19].getDesc().setDType(2);
/* 6530 */     field[19].getDesc().setPrec(128);
/* 6531 */     field[19].getDesc().setScale(0);
/* 6532 */     field[19].getDesc().setNullable(false);
/*      */     
/* 6534 */     field[20] = new DmdbColumn(this.connection);
/* 6535 */     field[20].getDesc().setName("SOURCE_DATA_TYPE");
/* 6536 */     field[20].getDesc().setDType(6);
/* 6537 */     field[20].getDesc().setPrec(2);
/* 6538 */     field[20].getDesc().setScale(0);
/* 6539 */     field[20].getDesc().setNullable(false);
/*      */     
/* 6541 */     DmdbInfo dmInfo = new DmdbInfo();
/* 6542 */     dmInfo.setColumnsInfo(field);
/*      */     
/* 6544 */     dmInfo.setRowCount(0L);
/*      */     DmdbResultSet_bs rs;
/* 6546 */     DmdbResultSet_bs rs; if (this.connection.checkConnToStandby()) {
/* 6547 */       rs = new DmdbResultSet_bs(dmInfo, true);
/*      */     } else {
/* 6549 */       rs = new DmdbResultSet_bs(dmInfo, false);
/*      */     }
/* 6551 */     return rs;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsResultSetHoldability(int holdability)
/*      */     throws SQLException
/*      */   {
/* 6575 */     return (holdability == 2) || (holdability == 1);
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getResultSetHoldability()
/*      */     throws SQLException
/*      */   {
/* 6595 */     return 1;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getDatabaseMajorVersion()
/*      */     throws SQLException
/*      */   {
/* 6613 */     return Integer.parseInt(this.connection.getDmServerVersion().substring(0, 1));
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getDatabaseMinorVersion()
/*      */     throws SQLException
/*      */   {
/* 6631 */     return Integer.parseInt(this.connection.getDmServerVersion().substring(2, 3));
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getJDBCMajorVersion()
/*      */     throws SQLException
/*      */   {
/* 6649 */     return DmdbType.JDBC_VERSION;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getJDBCMinorVersion()
/*      */     throws SQLException
/*      */   {
/* 6667 */     return 0;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 6679 */   int XOpen = 1;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/* 6689 */   int sqlStateSQL99 = 2;
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public int getSQLStateType()
/*      */     throws SQLException
/*      */   {
/* 6708 */     return this.XOpen;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean locatorsUpdateCopy()
/*      */     throws SQLException
/*      */   {
/* 6728 */     return false;
/*      */   }
/*      */   
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */ 
/*      */   public boolean supportsStatementPooling()
/*      */     throws SQLException
/*      */   {
/* 6746 */     return true;
/*      */   }
/*      */   
/*      */   public ResultSet getSchemas(String catalog, String schemaPattern)
/*      */     throws SQLException
/*      */   {
/* 6752 */     if ((catalog != null) && (catalog.equals(""))) {
/* 6753 */       throw new SQLException("There is not a table without a catalog!");
/*      */     }
/* 6755 */     if ((schemaPattern != null) && (schemaPattern.equals(""))) {
/* 6756 */       throw new SQLException("There is not a table without a schema!");
/*      */     }
/* 6758 */     String catalog2 = catalog == null ? this.connection.getCatalog() : 
/* 6759 */       StringUtil.getEscStringName(catalog.trim());
/* 6760 */     String schemaname = schemaPattern == null ? "%" : StringUtil.getEscStringName(schemaPattern);
/*      */     
/* 6762 */     String sql = "";
/*      */     
/* 6764 */     if (catalog2 == null) {
/* 6765 */       sql = "SELECT DISTINCT NAME AS TABLE_SCHEM, NULL AS TABLE_CATALOG FROM ";
/*      */     } else {
/* 6767 */       sql = "SELECT DISTINCT NAME AS TABLE_SCHEM, '" + catalog2 + "' AS TABLE_CATALOG FROM ";
/*      */     }
/* 6769 */     if (getEscape(schemaname))
/*      */     {
/* 6771 */       if (!schemaname.equalsIgnoreCase("%")) {
/* 6772 */         sql = sql + "SYS.SYSOBJECTS USERS WHERE TYPE$='SCH' AND NAME LIKE '" + schemaname + "'" + this.m_esp;
/*      */       } else {
/* 6774 */         sql = sql + "SYS.SYSOBJECTS USERS WHERE TYPE$='SCH' ";
/*      */       }
/*      */     } else {
/* 6777 */       sql = sql + "SYS.SYSOBJECTS USERS WHERE TYPE$='SCH' AND NAME = '" + schemaname + "'";
/*      */     }
/* 6779 */     sql = sql + " ORDER BY TABLE_SCHEM ASC;";
/*      */     
/* 6781 */     DmdbStatement_bs stmt = null;
/* 6782 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 6785 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 6786 */         1007, 1);
/* 6787 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql, 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 6793 */       throw e;
/*      */     }
/* 6795 */     return rs;
/*      */   }
/*      */   
/*      */   public ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern)
/*      */     throws SQLException
/*      */   {
/* 6801 */     if ((this.connection.getComOra()) && (StringUtil.isNotEmpty(catalog)))
/*      */     {
/*      */       try
/*      */       {
/* 6805 */         return getPkgProcedures(schemaPattern, catalog, functionNamePattern, 2);
/*      */       }
/*      */       catch (SQLException localSQLException1) {}
/*      */     }
/*      */     
/*      */ 
/* 6811 */     if ((catalog != null) && (catalog.equals("")))
/* 6812 */       throw new SQLException("There is not a procedure without a catalog!");
/* 6813 */     if ((schemaPattern != null) && (schemaPattern.equals("")))
/* 6814 */       throw new SQLException("There is not a procedure without a schema!");
/* 6815 */     if ((functionNamePattern != null) && (functionNamePattern.equals(""))) {
/* 6816 */       return null;
/*      */     }
/* 6818 */     String catalog2 = catalog == null ? this.connection.getCatalog() : 
/* 6819 */       StringUtil.getEscStringName(catalog.trim());
/* 6820 */     String schemaname = schemaPattern == null ? "%" : StringUtil.getEscStringName(schemaPattern);
/* 6821 */     String funcname = functionNamePattern == null ? "%" : 
/* 6822 */       StringUtil.getEscStringName(functionNamePattern);
/*      */     
/* 6824 */     StringBuffer sql = new StringBuffer("");
/* 6825 */     sql.append("SELECT DISTINCT ");
/*      */     
/* 6827 */     if (catalog2 == null) {
/* 6828 */       sql.append("NULL");
/*      */     } else {
/* 6830 */       sql.append("'" + catalog2 + "'");
/*      */     }
/* 6832 */     sql.append(" AS FUNCTION_CAT, SCHEMAS.NAME AS FUNCTION_SCHEM, FUNCS.NAME AS FUNCTION_NAME, NULL AS REMARKS, 2 AS FUNCTION_TYPE, FUNCS.NAME AS SPECIFIC_NAME");
/*      */     
/* 6834 */     sql.append(" FROM ");
/* 6835 */     sql.append("(SELECT * FROM SYS.SYSOBJECTS WHERE SUBTYPE$='PROC' AND INFO1&0x01=0");
/*      */     
/* 6837 */     String funClause = makeClause_objWithoutPrec(funcname);
/* 6838 */     if (funClause != null)
/*      */     {
/* 6840 */       sql.append(" AND NAME ");
/* 6841 */       sql.append(funClause);
/*      */     }
/* 6843 */     sql.append(")FUNCS, ");
/*      */     
/* 6845 */     String schemaClause = makeSchemaClause(schemaname);
/* 6846 */     sql.append(schemaClause);
/* 6847 */     sql.append("SCHEMAS");
/*      */     
/* 6849 */     sql.append(" ORDER BY FUNCTION_SCHEM ASC,FUNCTION_NAME ASC;");
/*      */     
/* 6851 */     DmdbStatement_bs stmt = null;
/* 6852 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 6855 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 6856 */         1007, 1);
/* 6857 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql.toString(), 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 6863 */       throw e;
/*      */     }
/*      */     
/* 6866 */     return rs;
/*      */   }
/*      */   
/*      */   public ResultSet getFunctionColumns(String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern)
/*      */     throws SQLException
/*      */   {
/* 6872 */     if ((this.connection.getComOra()) && (StringUtil.isNotEmpty(catalog)))
/*      */     {
/*      */       try
/*      */       {
/* 6876 */         return getPkgProcedureColumns(schemaPattern, catalog, functionNamePattern, columnNamePattern, 
/* 6877 */           2);
/*      */       }
/*      */       catch (SQLException localSQLException1) {}
/*      */     }
/*      */     
/*      */ 
/* 6883 */     if ((catalog != null) && (catalog.equals("")))
/* 6884 */       throw new SQLException("There is not a procedure without a catalog!");
/* 6885 */     if ((schemaPattern != null) && (schemaPattern.equals(""))) {
/* 6886 */       throw new SQLException("There is not a procedure without a schema!");
/*      */     }
/* 6888 */     if (((functionNamePattern != null) && (functionNamePattern.equals(""))) || ((columnNamePattern != null) && 
/* 6889 */       (columnNamePattern.equals("")))) {
/* 6890 */       return null;
/*      */     }
/* 6892 */     String catalog2 = catalog == null ? this.connection.getCatalog() : 
/* 6893 */       StringUtil.getEscStringName(catalog.trim());
/* 6894 */     String schemaname = schemaPattern == null ? "%" : StringUtil.getEscStringName(schemaPattern);
/* 6895 */     String funcname = functionNamePattern == null ? "%" : 
/* 6896 */       StringUtil.getEscStringName(functionNamePattern);
/* 6897 */     String colname = columnNamePattern == null ? "%" : StringUtil.getEscStringName(columnNamePattern);
/*      */     
/* 6899 */     StringBuffer sql = new StringBuffer();
/* 6900 */     sql.append("SELECT DISTINCT ");
/*      */     
/* 6902 */     if (catalog2 == null) {
/* 6903 */       sql.append("NULL");
/*      */     } else {
/* 6905 */       sql.append("'" + catalog2 + "'");
/*      */     }
/* 6907 */     sql.append(" AS FUNCTION_CAT,");
/* 6908 */     sql.append("USERS.NAME AS FUNCTION_SCHEM,");
/* 6909 */     sql.append("FUNCS.NAME AS FUNCTION_NAME,");
/* 6910 */     if (this.connection.getComOra())
/*      */     {
/* 6912 */       sql.append("CASE ARG.INFO1 WHEN 3 THEN NULL ELSE ARG.NAME END AS COLUMN_NAME, ");
/*      */     }
/*      */     else
/*      */     {
/* 6916 */       sql.append("ARG.NAME AS COLUMN_NAME,");
/*      */     }
/* 6918 */     sql.append("CASE ARG.INFO1 WHEN 0 THEN 1 WHEN 1 THEN 3 WHEN 2 THEN 2 WHEN 3 THEN 4 END AS COLUMN_TYPE,");
/* 6919 */     sql.append(makeDataTypeClause("ARG.TYPE$", "ARG.SCALE"));
/* 6920 */     sql.append("AS DATA_TYPE,");
/* 6921 */     sql.append(makeDataTypeNameClause("ARG.TYPE$"));
/* 6922 */     sql.append("AS TYPE_NAME,");
/* 6923 */     sql.append("CASE SF_GET_COLUMN_SIZE(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) WHEN -2 THEN NULL ");
/* 6924 */     sql.append("ELSE SF_GET_COLUMN_SIZE(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) END AS \"PRECISION\",");
/* 6925 */     sql.append("CASE SF_GET_BUFFER_LEN(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) WHEN -2 THEN NULL ");
/* 6926 */     sql.append("ELSE SF_GET_BUFFER_LEN(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT), CAST (ARG.SCALE AS INT)) END AS LENGTH,");
/* 6927 */     sql.append("CASE SF_GET_DECIMAL_DIGITS(ARG.TYPE$, CAST (ARG.SCALE AS INT)) WHEN -2 THEN NULL ");
/* 6928 */     sql.append("ELSE SF_GET_DECIMAL_DIGITS(ARG.TYPE$, CAST (ARG.SCALE AS INT)) END AS SCALE,");
/* 6929 */     sql.append("10 AS RADIX,");
/* 6930 */     sql.append("1 AS NULLABLE,");
/* 6931 */     sql.append("NULL AS REMARKS, ");
/* 6932 */     sql.append("CASE SF_GET_OCT_LENGTH(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT)) WHEN -2 THEN NULL ");
/* 6933 */     sql.append("ELSE SF_GET_OCT_LENGTH(ARG.TYPE$, CAST (ARG.LENGTH$ AS INT)) END AS CHAR_OCTET_LENGTH, ");
/* 6934 */     sql.append("CASE ARG.INFO1 WHEN 3 THEN 0 ELSE ARG.COLID + 1 END AS ORDINAL_POSITION, ");
/* 6935 */     sql.append("CASE ARG.NULLABLE$ WHEN 'Y' THEN 'YES' ELSE 'NO' END AS IS_NULLABLE, ");
/* 6936 */     sql.append("FUNCS.NAME AS SPECIFIC_NAME");
/* 6937 */     sql.append(" FROM ");
/*      */     
/* 6939 */     String schemaClause = makeSchemaClause(schemaname);
/* 6940 */     sql.append(schemaClause);
/* 6941 */     sql.append(" AS USERS, ");
/*      */     
/* 6943 */     String funClause = makeFuncClause(funcname);
/* 6944 */     sql.append(funClause);
/* 6945 */     sql.append(" AS FUNCS, ");
/*      */     
/* 6947 */     sql.append("SYS.SYSCOLUMNS ARG ");
/* 6948 */     sql.append("WHERE ");
/*      */     
/* 6950 */     String argClause = makeClause_objWithoutPrec(colname);
/* 6951 */     if (argClause != null)
/*      */     {
/* 6953 */       sql.append("ARG.NAME ");
/* 6954 */       sql.append(argClause);
/* 6955 */       sql.append(" AND ");
/*      */     }
/*      */     
/* 6958 */     sql.append(" USERS.ID = FUNCS.SCHID AND FUNCS.ID = ARG.ID");
/* 6959 */     sql.append(" ORDER BY FUNCTION_SCHEM ASC,FUNCTION_NAME ASC;");
/*      */     
/* 6961 */     DmdbStatement_bs stmt = null;
/* 6962 */     DmdbResultSet_bs rs = null;
/*      */     try
/*      */     {
/* 6965 */       stmt = (DmdbStatement_bs)this.connection.createStatement(1004, 
/* 6966 */         1007, 1);
/* 6967 */       rs = (DmdbResultSet_bs)stmt.executeQuery(sql.toString(), 1);
/*      */ 
/*      */     }
/*      */     catch (SQLException e)
/*      */     {
/*      */ 
/* 6973 */       throw e;
/*      */     }
/* 6975 */     return rs;
/*      */   }
/*      */ }


/* Location:              D:\Program Files\DBMS_20150813\jdbc\Dm7JdbcDriver17.jar!\dm\jdbc\driver\DmdbDatabaseMetaData_bs.class
 * Java compiler version: 2 (46.0)
 * JD-Core Version:       0.7.1
 */